WonxDisplay.c 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /*****************************************************************************/
  2. /* ここから */
  3. /*****************************************************************************/
  4. #include "WonxDisplayP.h"
  5. /*****************************************************************************/
  6. /* メンバ関数の定義 */
  7. /*****************************************************************************/
  8. XDisplay WonxDisplay_GetXDisplay(WonxDisplay wonx_display)
  9. { return (wonx_display->x_display); }
  10. WWDisplay WonxDisplay_GetWWDisplay(WonxDisplay wonx_display)
  11. { return (wonx_display->ww_display); }
  12. static XDisplay WonxDisplay_SetXDisplay(WonxDisplay wonx_d, XDisplay xd)
  13. { return (wonx_d->x_display = xd); }
  14. static WWDisplay WonxDisplay_SetWWDisplay(WonxDisplay wonx_d, WWDisplay wd)
  15. { return (wonx_d->ww_display = wd); }
  16. WonxDisplay WonxDisplay_Create(int x_width, int x_height,
  17. int ww_lcd_panel_width, int ww_lcd_panel_height,
  18. int ww_screen_width, int ww_screen_height)
  19. {
  20. WonxDisplay wonx_display;
  21. WWDisplay ww_display;
  22. XDisplay x_display;
  23. wonx_display = (WonxDisplay)malloc(sizeof(_WonxDisplay));
  24. if (wonx_display == NULL)
  25. Error("WonxDisplay_Create", "Cannot allocate memory.");
  26. ww_display = WWDisplay_Create(ww_lcd_panel_width, ww_lcd_panel_height,
  27. ww_screen_width, ww_screen_height);
  28. if (ww_display == NULL)
  29. Error("WonxDisplay_Create", "Cannot create WonderWitch display.");
  30. WonxDisplay_SetWWDisplay(wonx_display, ww_display);
  31. x_display = XDisplay_Create(x_width, x_height);
  32. if (x_display == NULL)
  33. Error("WonxDisplay_Create", "Cannot create X display.");
  34. WonxDisplay_SetXDisplay(wonx_display, x_display);
  35. return (wonx_display);
  36. }
  37. int WonxDisplay_Flush(WonxDisplay wonx_display)
  38. {
  39. int i;
  40. XDisplay x_display;
  41. WWDisplay ww_display;
  42. WWLCDPanel ww_lcd_panel;
  43. x_display = WonxDisplay_GetXDisplay(wonx_display);
  44. ww_display = WonxDisplay_GetWWDisplay(wonx_display);
  45. if (XDisplay_GetLCDDraw(x_display)) {
  46. WWDisplay_DrawLCDPanel(ww_display);
  47. ww_lcd_panel = WWDisplay_GetLCDPanel(ww_display);
  48. XDisplay_DrawLCDWindow(x_display, ww_lcd_panel);
  49. }
  50. if (XDisplay_GetColorMapPrint(x_display)) {
  51. WWColorMap_PrintData(WWDisplay_GetColorMap(ww_display), stdout);
  52. XDisplay_SetColorMapPrint(x_display, 0);
  53. }
  54. if (XDisplay_GetPalettePrint(x_display)) {
  55. for (i = 0; i < 16; i++) {
  56. WWPalette_PrintData(WWDisplay_GetPalette(ww_display, i), stdout);
  57. }
  58. XDisplay_SetPalettePrint(x_display, 0);
  59. }
  60. if (XDisplay_GetCharacterPrint(x_display)) {
  61. for (i = 0; i < 512; i++) {
  62. WWCharacter_PrintData(WWDisplay_GetCharacter(ww_display, i), stdout);
  63. }
  64. XDisplay_SetCharacterPrint(x_display, 0);
  65. }
  66. if (XDisplay_GetSpritePrint(x_display)) {
  67. for (i = 0; i < 128; i++) {
  68. WWSprite_PrintData(WWDisplay_GetSprite(ww_display, i), stdout);
  69. }
  70. XDisplay_SetSpritePrint(x_display, 0);
  71. }
  72. return (0);
  73. }
  74. /*****************************************************************************/
  75. /* ここまで */
  76. /*****************************************************************************/
  77. /*****************************************************************************/
  78. /* End of File. */
  79. /*****************************************************************************/