WonxDisplay.c 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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_Sync(WonxDisplay wonx_display)
  38. {
  39. int i;
  40. XDisplay x_display;
  41. WWDisplay ww_display;
  42. x_display = WonxDisplay_GetXDisplay(wonx_display);
  43. ww_display = WonxDisplay_GetWWDisplay(wonx_display);
  44. if (XDisplay_GetColorMapPrint(x_display)) {
  45. WWColorMap_PrintData(WWDisplay_GetColorMap(ww_display), stdout);
  46. XDisplay_SetColorMapPrint(x_display, 0);
  47. }
  48. if (XDisplay_GetPalettePrint(x_display)) {
  49. for (i = 0; i < 16; i++) {
  50. WWPalette_PrintData(WWDisplay_GetPalette(ww_display, i), stdout);
  51. }
  52. XDisplay_SetPalettePrint(x_display, 0);
  53. }
  54. if (XDisplay_GetCharacterPrint(x_display)) {
  55. for (i = 0; i < 512; i++) {
  56. WWCharacter_PrintData(WWDisplay_GetCharacter(ww_display, i), stdout);
  57. }
  58. XDisplay_SetCharacterPrint(x_display, 0);
  59. }
  60. if (XDisplay_GetSpritePrint(x_display)) {
  61. for (i = 0; i < 128; i++) {
  62. WWSprite_PrintData(WWDisplay_GetSprite(ww_display, i), stdout);
  63. }
  64. XDisplay_SetSpritePrint(x_display, 0);
  65. }
  66. XDisplay_Sync(x_display);
  67. return (0);
  68. }
  69. int WonxDisplay_Flush(WonxDisplay wonx_display)
  70. {
  71. XDisplay x_display;
  72. WWDisplay ww_display;
  73. WWLCDPanel ww_lcd_panel;
  74. x_display = WonxDisplay_GetXDisplay(wonx_display);
  75. ww_display = WonxDisplay_GetWWDisplay(wonx_display);
  76. if (XDisplay_GetLCDDraw(x_display)) {
  77. WWDisplay_DrawLCDPanel(ww_display);
  78. ww_lcd_panel = WWDisplay_GetLCDPanel(ww_display);
  79. XDisplay_DrawLCDWindow(x_display, ww_lcd_panel);
  80. }
  81. WonxDisplay_Sync(wonx_display);
  82. return (0);
  83. }
  84. /*****************************************************************************/
  85. /* ここまで */
  86. /*****************************************************************************/
  87. /*****************************************************************************/
  88. /* End of File. */
  89. /*****************************************************************************/