| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- MODULE renderer_demo ;
- (*
- m2SDL3 example: renderer basics - clear, colored rects, present.
- Uses SDL_CreateWindowAndRenderer (title, w, h, flags) and the
- float SDLFRect records; colors are Uint8 CARDINAL8 values.
- Run: ./build/examples/renderer_demo (auto-quits after 3 s).
- *)
- FROM SYSTEM IMPORT CARDINAL8;
- FROM SDL3 IMPORT SDL_Init, SDL_Quit, SDL_Delay, SDL_GetTicks,
- SDLInitVideo;
- FROM SDL3Video IMPORT WindowHandle, WindowResizable, SDL_DestroyWindow;
- FROM SDL3Render IMPORT RendererHandle, SDL_CreateWindowAndRenderer,
- SDL_DestroyRenderer, SDL_SetRenderDrawColor,
- SDL_RenderClear, SDL_RenderPresent, SDL_RenderFillRect,
- SDL_SetRenderLogicalPresentation, LogicalLetterbox;
- FROM SDL3Rect IMPORT SDLFRect, MakeFRect;
- FROM SDL3Utils IMPORT DrainEvents;
- FROM libc IMPORT printf;
- VAR
- win: WindowHandle;
- ren: RendererHandle;
- r: SDLFRect;
- quit: BOOLEAN;
- start: LONGCARD;
- BEGIN
- IF NOT SDL_Init(SDLInitVideo) THEN
- printf("renderer_demo: SDL_Init failed\n");
- HALT(1)
- END;
- IF NOT SDL_CreateWindowAndRenderer("m2SDL3 renderer demo",
- 640, 480,
- VAL(LONGCARD, WindowResizable),
- win, ren) THEN
- printf("renderer_demo: CreateWindowAndRenderer failed\n");
- SDL_Quit;
- HALT(1)
- END;
- IF NOT SDL_SetRenderLogicalPresentation(ren, 640, 480,
- LogicalLetterbox) THEN
- printf("renderer_demo: logical presentation failed\n")
- END;
- quit := FALSE;
- start := SDL_GetTicks();
- WHILE NOT quit DO
- DrainEvents(quit);
- SDL_SetRenderDrawColor(ren, VAL(CARDINAL8, 20), VAL(CARDINAL8, 20),
- VAL(CARDINAL8, 40), VAL(CARDINAL8, 255));
- SDL_RenderClear(ren);
- r := MakeFRect(VAL(SHORTREAL, 100.0), VAL(SHORTREAL, 100.0),
- VAL(SHORTREAL, 200.0), VAL(SHORTREAL, 150.0));
- SDL_SetRenderDrawColor(ren, VAL(CARDINAL8, 0), VAL(CARDINAL8, 200),
- VAL(CARDINAL8, 0), VAL(CARDINAL8, 255));
- SDL_RenderFillRect(ren, r);
- r := MakeFRect(VAL(SHORTREAL, 350.0), VAL(SHORTREAL, 200.0),
- VAL(SHORTREAL, 150.0), VAL(SHORTREAL, 100.0));
- SDL_SetRenderDrawColor(ren, VAL(CARDINAL8, 200), VAL(CARDINAL8, 0),
- VAL(CARDINAL8, 0), VAL(CARDINAL8, 255));
- SDL_RenderFillRect(ren, r);
- SDL_RenderPresent(ren);
- IF SDL_GetTicks() - start > 3000 THEN quit := TRUE END;
- SDL_Delay(16)
- END;
- SDL_DestroyRenderer(ren);
- SDL_DestroyWindow(win);
- SDL_Quit;
- printf("renderer_demo: bye\n")
- END renderer_demo.
|