Blackberry Passport >> Core Native (C/C++) >> SDL 1.2

Color Keying


main.cpp

#include <stdio.h>
#include <stdlib.h>
#include <SDL.h>

int main(int argc, char** args)
{
  SDL_Rect of;
  SDL_Surface *bg = NULL;
  SDL_Surface *msg = NULL;
  SDL_Surface *screen = NULL;
  SDL_Surface *loadedImage = NULL;

  if(SDL_Init(SDL_INIT_EVERYTHING) == -1){
    printf("failed to SDL_Init\n");
    return -1;
  }

  screen = SDL_SetVideoMode(1440, 1440, 32, SDL_SWSURFACE);
  if(screen == NULL){
    printf("failed to SD_SetVideMode\n");
    return -1;
  }
  SDL_ShowCursor(0);

  loadedImage = SDL_LoadBMP("app/native/bg.bmp");
  if(loadedImage != NULL){
    bg = SDL_DisplayFormat(loadedImage);
    SDL_FreeSurface(loadedImage);
  }

  loadedImage = SDL_LoadBMP("app/native/msg.bmp");
  if(loadedImage != NULL){
    msg = SDL_DisplayFormat(loadedImage);
    SDL_FreeSurface(loadedImage);
  }
  Uint32 colorkey = SDL_MapRGB(msg->format, 0, 0, 0);
  SDL_SetColorKey(msg, SDL_SRCCOLORKEY, colorkey);

  of.x = 0; 
  of.y= 0;
  SDL_BlitSurface(bg, NULL, screen, &of);
  
  of.x = 320; 
  of.y= 0;
  SDL_BlitSurface(bg, NULL, screen, &of);
  
  of.x = 0; 
  of.y= 240;
  SDL_BlitSurface(bg, NULL, screen, &of);
  
  of.x = 320; 
  of.y= 240;
  SDL_BlitSurface(bg, NULL, screen, &of);

  of.x = 80; 
  of.y= 60;
  SDL_BlitSurface(msg, NULL, screen, &of);

  SDL_Flip(screen);
  SDL_Delay(30000);
  SDL_FreeSurface(bg);
  SDL_FreeSurface(msg);
  SDL_Quit();
  return 0;
}

bar-descriptor.xml

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<qnx xmlns="http://www.qnx.com/schemas/application/1.0">
  <id>com.steward.sdl.ch2</id>
  <name>ch2</name>
  <filename>ch2</filename>
  <versionNumber>1.0.0</versionNumber>
  <buildId>1</buildId>
  <description>Lesson 2. Optimized Surface Loading and Blitting</description>

  <author>Steward</author>
  <authorId>gYAAgGE4qaHzBnzEAu8JKe4G1OI</authorId>

  <asset path="main" entry="true" type="Qnx/Elf">main</asset>
  <asset path="bg.bmp">bg.bmp</asset>
  <asset path="msg.bmp">msg.bmp</asset>
  <asset path="lib" type="Qnx/Elf">lib</asset>

  <permission system="true">run_native</permission>
  <env var="LD_LIBRARY_PATH" value="app/native/lib"/>
</qnx>

Makefile

main: main.cpp
	ntoarmv7-gcc main.cpp -g -o main lib/libSDL-1.2.so.11 -Iinclude
	blackberry-nativepackager -package main.bar bar-descriptor.xml -devMode -debugToken ${HOME}/.rim/debugtoken_q30.bar

clean:
	rm -rf main
	rm -rf main.bar

完成



返回上一頁