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

Keyboard


main.cpp

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

int main(int argc, char* args[])
{
  int loop = 1;
  SDL_Event event;

  if(SDL_Init(SDL_INIT_VIDEO) != 0){
    printf("%s, failed to SDL_Init\n", __func__);
    return -1;
  }

  SDL_Surface* screen;
  screen = SDL_SetVideoMode(1440, 1440, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
  if(screen == NULL){
    printf("%s, failed to SDL_SetVideMode\n", __func__);
    return -1;
  }
  SDL_ShowCursor(0);
  SDL_FillRect(screen, &screen->clip_rect, SDL_MapRGB(screen->format, 0xff, 0xff, 0xff));

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

  SDL_Rect of={0}; 
  SDL_Color textColor = {0xff, 0, 0};
  TTF_Font *font = TTF_OpenFont("app/native/lato.ttf", 100);
  SDL_Surface *msg = TTF_RenderText_Solid(font, "Lesson 8. Key Presses", textColor);
  
  of.x = 100;
  of.y = 600;
  SDL_BlitSurface(msg, NULL, screen, &of);
  SDL_Flip(screen);
  while(loop){
    while(SDL_PollEvent(&event)){
      char buf[128];
      if(event.type == SDL_KEYDOWN){
        if(event.key.keysym.sym == SDLK_x){
          loop = 0;
        }
        SDL_FreeSurface(msg);
        sprintf(buf, "sym 0x%d pressed !", event.key.keysym.sym); 
        SDL_FillRect(screen, &screen->clip_rect, SDL_MapRGB(screen->format, 0xff, 0xff, 0xff));
        msg = TTF_RenderText_Solid(font, buf, textColor);
        SDL_BlitSurface(msg, NULL, screen, &of);
        SDL_Flip(screen);
      }   
    }   
  }
  TTF_CloseFont(font);
  SDL_FreeSurface(msg);
  TTF_Quit();
  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.ch8</id>
  <name>ch8</name>
  <filename>ch8</filename>
  <versionNumber>1.0.0</versionNumber>
  <buildId>1</buildId>
  <description>Lesson 8. Key Presses</description>

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

  <asset path="main" entry="true" type="Qnx/Elf">main</asset>
  <asset path="lato.ttf">lato.ttf</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 lib/libSDL_image-1.2.so.8 lib/libSDL_ttf-2.0.so.10 $(QNX_TARGET)/lib/libwebp.a
	blackberry-nativepackager -package main.bar bar-descriptor.xml -devMode -debugToken ${HOME}/.rim/debugtoken_q30.bar

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

完成


返回上一頁