Advertisement
jtjj222

My first playbook app (simple flashlight)

Feb 16th, 2013
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.13 KB | None | 0 0
  1. #include <screen/screen.h>
  2. #include <bps/navigator.h>
  3. #include <bps/screen.h>
  4. #include <bps/bps.h>
  5. #include <bps/event.h>
  6. #include <stdio.h>
  7.  
  8. int main(int argc, char *argv[]) {
  9.     fputs("Starting", stderr);
  10.  
  11.     screen_context_t screen_context = 0;
  12.     screen_create_context(&screen_context,0);
  13.  
  14.     screen_window_t window = 0;
  15.     screen_create_window(&window,screen_context);
  16.     int usage = SCREEN_USAGE_NATIVE | SCREEN_USAGE_WRITE;
  17.     screen_set_window_property_iv(window,SCREEN_PROPERTY_USAGE,&usage);
  18.  
  19.     screen_create_window_buffers(window, 2);
  20.     screen_buffer_t windowBuffer[2];
  21.     screen_get_window_property_pv(window, SCREEN_PROPERTY_RENDER_BUFFERS, (void**)windowBuffer);
  22.     int dimensions[2] = {0,0};
  23.     screen_get_window_property_iv(window, SCREEN_PROPERTY_BUFFER_SIZE, dimensions);
  24.  
  25.     screen_pixmap_t pixmap = 0;
  26.     int format = SCREEN_FORMAT_RGBA8888;
  27.     screen_create_pixmap(&pixmap, screen_context);
  28.     screen_set_pixmap_property_iv(pixmap, SCREEN_PROPERTY_BUFFER_SIZE, dimensions);
  29.     screen_set_pixmap_property_iv(pixmap, SCREEN_PROPERTY_FORMAT, &format);
  30.     screen_create_pixmap_buffer(pixmap);
  31.  
  32.     screen_buffer_t pixmap_buffer = 0;
  33.     screen_get_pixmap_property_pv(pixmap, SCREEN_PROPERTY_RENDER_BUFFERS, (void **)&pixmap_buffer);
  34.     unsigned char *backbuffer = 0;
  35.     screen_get_buffer_property_pv(pixmap_buffer, SCREEN_PROPERTY_POINTER, (void**)&backbuffer);
  36.  
  37.     int stride = 0;
  38.     screen_get_buffer_property_iv(pixmap_buffer, SCREEN_PROPERTY_STRIDE, &stride);
  39.  
  40.     int pos = 1;
  41.     int amount = 1;
  42.  
  43.     while (1==1) {
  44.  
  45.         pos+=amount;
  46.         if (pos >= 255 || pos <= 0) {
  47.             if (amount == 1) amount = -1;
  48.             else amount=1;
  49.         }
  50.  
  51.         int x,y;
  52.         for (x = 0; x < dimensions[0]; x++) {
  53.             for (y = 0; y< dimensions[1]; y++) {
  54.                 backbuffer[x*4 + y*stride] = pos; //red
  55.                 backbuffer[x*4+1 + y*stride] = pos; //green
  56.                 backbuffer[x*4+2 + y*stride] = pos; //blue
  57.                 backbuffer[x*4+3 + y*stride] = 0xff; //alpha
  58.             }
  59.         }
  60.  
  61.         int hg[] = {
  62.             SCREEN_BLIT_END
  63.         };
  64.  
  65.         int rect[4] = {0, 0, dimensions[0], dimensions[1]};
  66.  
  67.         screen_blit(screen_context, windowBuffer[0], pixmap_buffer, hg);
  68.         screen_post_window(window, windowBuffer[0], 1, rect, 0);
  69.     }
  70.  
  71.     return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement