Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Latest commit

 

History

History
152 lines (131 loc) · 4.95 KB

teststreaming.c

File metadata and controls

152 lines (131 loc) · 4.95 KB
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/********************************************************************************
* *
* Running moose :) Coded by Mike Gorchak. *
* *
********************************************************************************/
#include <stdlib.h>
#include <stdio.h>
#include "SDL.h"
#define MOOSEPIC_W 64
#define MOOSEPIC_H 88
#define MOOSEFRAME_SIZE (MOOSEPIC_W * MOOSEPIC_H)
#define MOOSEFRAMES_COUNT 10
SDL_Color MooseColors[84] = {
Feb 11, 2011
Feb 11, 2011
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
{49, 49, 49}, {66, 24, 0}, {66, 33, 0}, {66, 66, 66},
{66, 115, 49}, {74, 33, 0}, {74, 41, 16}, {82, 33, 8},
{82, 41, 8}, {82, 49, 16}, {82, 82, 82}, {90, 41, 8},
{90, 41, 16}, {90, 57, 24}, {99, 49, 16}, {99, 66, 24},
{99, 66, 33}, {99, 74, 33}, {107, 57, 24}, {107, 82, 41},
{115, 57, 33}, {115, 66, 33}, {115, 66, 41}, {115, 74, 0},
{115, 90, 49}, {115, 115, 115}, {123, 82, 0}, {123, 99, 57},
{132, 66, 41}, {132, 74, 41}, {132, 90, 8}, {132, 99, 33},
{132, 99, 66}, {132, 107, 66}, {140, 74, 49}, {140, 99, 16},
{140, 107, 74}, {140, 115, 74}, {148, 107, 24}, {148, 115, 82},
{148, 123, 74}, {148, 123, 90}, {156, 115, 33}, {156, 115, 90},
{156, 123, 82}, {156, 132, 82}, {156, 132, 99}, {156, 156, 156},
{165, 123, 49}, {165, 123, 90}, {165, 132, 82}, {165, 132, 90},
{165, 132, 99}, {165, 140, 90}, {173, 132, 57}, {173, 132, 99},
{173, 140, 107}, {173, 140, 115}, {173, 148, 99}, {173, 173, 173},
{181, 140, 74}, {181, 148, 115}, {181, 148, 123}, {181, 156, 107},
{189, 148, 123}, {189, 156, 82}, {189, 156, 123}, {189, 156, 132},
{189, 189, 189}, {198, 156, 123}, {198, 165, 132}, {206, 165, 99},
{206, 165, 132}, {206, 173, 140}, {206, 206, 206}, {214, 173, 115},
{214, 173, 140}, {222, 181, 148}, {222, 189, 132}, {222, 189, 156},
{222, 222, 222}, {231, 198, 165}, {231, 231, 231}, {239, 206, 173}
40
41
42
43
};
Uint8 MooseFrames[MOOSEFRAMES_COUNT][MOOSEFRAME_SIZE];
Feb 11, 2011
Feb 11, 2011
44
void quit(int rc)
45
46
47
48
49
{
SDL_Quit();
exit(rc);
}
Feb 11, 2011
Feb 11, 2011
50
void UpdateTexture(SDL_Texture *texture, int frame)
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
{
SDL_Color *color;
Uint8 *src;
Uint32 *dst;
int row, col;
void *pixels;
int pitch;
if (SDL_LockTexture(texture, NULL, &pixels, &pitch) < 0) {
fprintf(stderr, "Couldn't lock texture: %s\n", SDL_GetError());
quit(5);
}
src = MooseFrames[frame];
for (row = 0; row < MOOSEPIC_H; ++row) {
dst = (Uint32*)((Uint8*)pixels + row * pitch);
for (col = 0; col < MOOSEPIC_W; ++col) {
color = &MooseColors[*src++];
*dst++ = (0xFF000000|(color->r<<16)|(color->g<<8)|color->b);
}
}
SDL_UnlockTexture(texture);
}
int
main(int argc, char **argv)
{
SDL_Window *window;
SDL_Renderer *renderer;
SDL_RWops *handle;
SDL_Texture *MooseTexture;
SDL_Event event;
SDL_bool done = SDL_FALSE;
int frame;
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
return 1;
}
/* load the moose images */
handle = SDL_RWFromFile("moose.dat", "rb");
if (handle == NULL) {
fprintf(stderr, "Can't find the file moose.dat !\n");
quit(2);
}
SDL_RWread(handle, MooseFrames, MOOSEFRAME_SIZE, MOOSEFRAMES_COUNT);
SDL_RWclose(handle);
/* Create the window and renderer */
window = SDL_CreateWindow("Happy Moose",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
MOOSEPIC_W*4, MOOSEPIC_H*4,
SDL_WINDOW_SHOWN|SDL_WINDOW_RESIZABLE);
if (!window) {
fprintf(stderr, "Couldn't set create window: %s\n", SDL_GetError());
quit(3);
}
renderer = SDL_CreateRenderer(window, -1, 0);
if (!renderer) {
fprintf(stderr, "Couldn't set create renderer: %s\n", SDL_GetError());
quit(4);
}
MooseTexture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, MOOSEPIC_W, MOOSEPIC_H);
if (!MooseTexture) {
fprintf(stderr, "Couldn't set create texture: %s\n", SDL_GetError());
quit(5);
}
/* Loop, waiting for QUIT or the escape key */
frame = 0;
while (!done) {
while (SDL_PollEvent(&event)) {
switch (event.type) {
case SDL_KEYDOWN:
if (event.key.keysym.sym == SDLK_ESCAPE) {
done = SDL_TRUE;
}
break;
case SDL_QUIT:
done = SDL_TRUE;
break;
}
}
frame = (frame + 1) % MOOSEFRAMES_COUNT;
UpdateTexture(MooseTexture, frame);
SDL_RenderClear(renderer);
SDL_RenderCopy(renderer, MooseTexture, NULL, NULL);
SDL_RenderPresent(renderer);
}
SDL_DestroyRenderer(renderer);
quit(0);
return 0;
}
/* vi: set ts=4 sw=4 expandtab: */