Compare commits
3 Commits
v0.0.4-alp
...
v0.0.7-alp
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
95d1135996 | ||
|
|
3547ae13a1 | ||
|
|
0cc1bd45ae |
43
HISTORY
43
HISTORY
@@ -1,3 +1,46 @@
|
||||
2000/10/5(<28><>)
|
||||
|
||||
wonx-a07 <20><><EFBFBD><EFBFBD>
|
||||
|
||||
WWLCDPanel <20>˥ӥåȥޥåץǡ<D7A5><C7A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>褷<EFBFBD><E8A4B7><EFBFBD>ӥåȥޥåפ<C3A5>
|
||||
<EFBFBD><EFBFBD><EFBFBD>褷<EFBFBD>ʤ<EFBFBD><EFBFBD>褦<EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ф<EFBFBD><EFBFBD><EFBFBD><EFBFBD>٤餷<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
(WWLCDPanel<65><6C>Ϣ<EFBFBD>ȡ<EFBFBD>XDisplay.c <20><> XDisplay_DrawLCDWindow() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
(XDisplay.c <20><> XDisplay_DrawLCDWindow() <20>ˤϡ<CBA4>̵<EFBFBD>̤<EFBFBD> malloc() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τǡ<CEA4>
|
||||
<20><><EFBFBD>Τ<EFBFBD><CEA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤ<EFBFBD>ɬ<EFBFBD><C9AC>)
|
||||
|
||||
wonx-a05 <20><> wonx-a06 <20><> WWDisplay.c (WWDisplay_DrawScreen()) <20><>
|
||||
ξ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̡<EFBFBD>wonx-a05 <20>Τۤ<CEA4><DBA4><EFBFBD><EFBFBD><EFBFBD>®<EFBFBD><C2AE><EFBFBD>ä<EFBFBD><C3A4>Τǡ<CEA4>wonx-a05 <20>Τۤ<CEA4><DBA4><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD><EFBFBD>뤳<EFBFBD>Ȥˤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
|
||||
|
||||
2000/10/4(<28><>)
|
||||
|
||||
wonx-a06 <20><><EFBFBD><EFBFBD>
|
||||
|
||||
WWDisplay_DrawScreen() <20>Υ<EFBFBD><CEA5>르<EFBFBD>ꥺ<EFBFBD><EAA5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><CBBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD>®<EFBFBD>ˤʤ<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD>ä<EFBFBD><EFBFBD><EFBFBD>X <20><><EFBFBD><EFBFBD><EFBFBD>Ф<EFBFBD><D0A4><EFBFBD><EFBFBD>褬<EFBFBD>ۥåȥ<C3A5><C8A5>ݥåȤˤʤäƤ<C3A4><C6A4><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD>פ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τǡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̤餹<EFBFBD><EFBFBD><EFBFBD>Ϥ<EFBFBD>ɬ<EFBFBD>ס<EFBFBD>
|
||||
|
||||
|
||||
|
||||
|
||||
2000/10/3(<28><>)
|
||||
|
||||
wonx-a05 <20><><EFBFBD><EFBFBD>
|
||||
|
||||
XDisplay_DrawLCDWindow() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD>̤ʷ<CAB7><D7BB><EFBFBD><EFBFBD>롼<EFBFBD>׳<EFBFBD><D7B3>˽Ф<CBBD><D0A4><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
WWDisplay_DrawScreen() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD>̤ʷ<CAB7><D7BB><EFBFBD><EFBFBD>롼<EFBFBD>׳<EFBFBD><D7B3>˽Ф<CBBD><D0A4><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD>ۥåȥ<EFBFBD><EFBFBD>ݥåȤ<EFBFBD>Ĵ<EFBFBD>٤<EFBFBD><EFBFBD>顤X<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʬ(XDisplay.c <20><> XDisplay_DrawLCDWindow()<29><>
|
||||
<EFBFBD>롼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʬ)<29><><EFBFBD>ۥåȥ<C3A5><C8A5>ݥåȤˤʤäƤ<C3A4><C6A4><EFBFBD><EFBFBD>Τǡ<CEA4><C7A1>ԥ<EFBFBD><D4A5><EFBFBD><EFBFBD>뤴<EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD>äơ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>®<EFBFBD>٤<EFBFBD><EFBFBD>夲<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
|
||||
|
||||
2000/9/30(<28><>)
|
||||
|
||||
wonx-a04 <20><><EFBFBD><EFBFBD>
|
||||
|
||||
4
Makefile
4
Makefile
@@ -2,8 +2,8 @@ XINCLUDEDIR = /usr/X11R6/include
|
||||
INCLUDEDIR = .
|
||||
XLIBDIR = /usr/X11R6/lib
|
||||
|
||||
VERSION = Wonx-a04
|
||||
PKGNAME = wonx-a04
|
||||
VERSION = Wonx-a07
|
||||
PKGNAME = wonx-a07
|
||||
|
||||
OBJS = WWCharacter.o WWColorMap.o WWDisplay.o WWLCDPanel.o WWPalette.o WWScreen.o WWSprite.o WonxDisplay.o XDisplay.o bank.o comm.o disp.o text.o key.o sound.o system.o timer.o etc.o wonx.o
|
||||
|
||||
|
||||
18
WWDisplay.c
18
WWDisplay.c
@@ -243,15 +243,17 @@ static int WWDisplay_DrawScreen(WWDisplay display, WWScreen screen)
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD>ۤ<EFBFBD><DBA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
|
||||
for (y = 0; y < lcd_panel_height; y++) {
|
||||
|
||||
if (mode == WWSCREEN_INSIDE_ONLY) {
|
||||
if (y > ey) { break; }
|
||||
if (y < sy) { y = sy - 1; continue; }
|
||||
}
|
||||
|
||||
py = y + WWScreen_GetRollY(screen);
|
||||
|
||||
for (x = 0; x < lcd_panel_width; x++) {
|
||||
px = x + WWScreen_GetRollX(screen);
|
||||
py = y + WWScreen_GetRollY(screen);
|
||||
|
||||
if (mode == WWSCREEN_INSIDE_ONLY) {
|
||||
if (y > ey) {
|
||||
x = lcd_panel_width - 1; y = lcd_panel_height - 1; continue;
|
||||
}
|
||||
if (y < sy) { x = lcd_panel_width - 1; y = sy - 1; continue; }
|
||||
if (x > ex) { x = lcd_panel_width - 1; continue; }
|
||||
if (x < sx) { x = sx - 1; continue; }
|
||||
} else if (mode == WWSCREEN_OUTSIDE_ONLY) {
|
||||
@@ -261,6 +263,8 @@ static int WWDisplay_DrawScreen(WWDisplay display, WWScreen screen)
|
||||
}
|
||||
}
|
||||
|
||||
px = x + WWScreen_GetRollX(screen);
|
||||
|
||||
pixel = WWScreen_GetPixel(screen, px, py);
|
||||
|
||||
/* Ʃ<><C6A9><EFBFBD><EFBFBD><EFBFBD>ξ<EFBFBD><CEBE><EFBFBD> */
|
||||
@@ -335,7 +339,7 @@ int WWDisplay_DrawLCDPanel(WWDisplay display)
|
||||
WWSprite sprite;
|
||||
|
||||
lcd_panel = WWDisplay_GetLCDPanel(display);
|
||||
lcd_panel_width = WWLCDPanel_GetWidth(lcd_panel);
|
||||
lcd_panel_width = WWLCDPanel_GetWidth( lcd_panel);
|
||||
lcd_panel_height = WWLCDPanel_GetHeight(lcd_panel);
|
||||
color_map = WWDisplay_GetColorMap(display);
|
||||
border = WWDisplay_GetBorder(display);
|
||||
|
||||
73
WWLCDPanel.c
73
WWLCDPanel.c
@@ -13,52 +13,95 @@ int WWLCDPanel_GetHeight(WWLCDPanel p) { return (p->height); }
|
||||
int WWLCDPanel_SetWidth( WWLCDPanel p, int n) { return (p->width = n); }
|
||||
int WWLCDPanel_SetHeight(WWLCDPanel p, int n) { return (p->height = n); }
|
||||
|
||||
unsigned char * WWLCDPanel_GetPixelMap(WWLCDPanel p) { return (p->pixel); }
|
||||
int WWLCDPanel_ResetCurrent(WWLCDPanel p)
|
||||
{
|
||||
return (p->current = 0);
|
||||
}
|
||||
|
||||
int WWLCDPanel_ReverseCurrent(WWLCDPanel p)
|
||||
{
|
||||
return (p->current = 1 - p->current);
|
||||
}
|
||||
|
||||
int WWLCDPanel_ResetAllDraw(WWLCDPanel p) { return (p->all_draw = 0); }
|
||||
int WWLCDPanel_SetAllDraw(WWLCDPanel p) { return (p->all_draw = 1); }
|
||||
int WWLCDPanel_IsAllDraw(WWLCDPanel p) { return (p->all_draw); }
|
||||
|
||||
unsigned char * WWLCDPanel_GetPixelMap(WWLCDPanel p)
|
||||
{
|
||||
return (p->pixel[p->current]);
|
||||
}
|
||||
|
||||
/* LCD<43>ϣ<EFBFBD><CFA3>ԥ<EFBFBD><D4A5><EFBFBD><EFBFBD><EFBFBD>16<31><36>(<28><><EFBFBD>ӥå<D3A5>ɬ<EFBFBD><C9AC>) */
|
||||
int WWLCDPanel_GetPixel(WWLCDPanel lcd_panel, int x, int y)
|
||||
static int WWLCDPanel_GetPixelByCurrent(WWLCDPanel lcd_panel, int current,
|
||||
int x, int y)
|
||||
{
|
||||
unsigned char pixel;
|
||||
|
||||
if ( (x < 0) || (x > WWLCDPanel_GetWidth(lcd_panel) - 1) ||
|
||||
if ( (x < 0) || (x > WWLCDPanel_GetWidth( lcd_panel) - 1) ||
|
||||
(y < 0) || (y > WWLCDPanel_GetHeight(lcd_panel) - 1) )
|
||||
return (-1);
|
||||
|
||||
pixel = lcd_panel->pixel[y * WWLCDPanel_GetWidth(lcd_panel) + x];
|
||||
pixel = lcd_panel->pixel[current][y * WWLCDPanel_GetWidth(lcd_panel) + x];
|
||||
pixel &= 0x0f;
|
||||
return ((int)pixel);
|
||||
}
|
||||
|
||||
static int WWLCDPanel_GetOldPixel(WWLCDPanel lcd_panel, int x, int y)
|
||||
{
|
||||
return (WWLCDPanel_GetPixelByCurrent(lcd_panel, 1 - lcd_panel->current, x, y));
|
||||
}
|
||||
|
||||
int WWLCDPanel_GetPixel(WWLCDPanel lcd_panel, int x, int y)
|
||||
{
|
||||
return (WWLCDPanel_GetPixelByCurrent(lcd_panel, lcd_panel->current, x, y));
|
||||
}
|
||||
|
||||
int WWLCDPanel_SetPixel(WWLCDPanel lcd_panel, int x, int y, int pixel)
|
||||
{
|
||||
unsigned char p;
|
||||
int n;
|
||||
|
||||
if ( (x < 0) || (x > WWLCDPanel_GetWidth(lcd_panel) - 1) ||
|
||||
if ( (x < 0) || (x > WWLCDPanel_GetWidth( lcd_panel) - 1) ||
|
||||
(y < 0) || (y > WWLCDPanel_GetHeight(lcd_panel) - 1) )
|
||||
return (-1);
|
||||
|
||||
p = ((unsigned char)pixel) & 0x0f;
|
||||
n = y * WWLCDPanel_GetWidth(lcd_panel) + x;
|
||||
lcd_panel->pixel[n] = p;
|
||||
lcd_panel->pixel[lcd_panel->current][n] = p;
|
||||
|
||||
return (pixel);
|
||||
}
|
||||
|
||||
int WWLCDPanel_IsPixelChanged(WWLCDPanel lcd_panel, int x, int y)
|
||||
{
|
||||
int old_pixel;
|
||||
int current_pixel;
|
||||
|
||||
if (WWLCDPanel_IsAllDraw(lcd_panel)) return (1);
|
||||
old_pixel = WWLCDPanel_GetOldPixel(lcd_panel, x, y);
|
||||
current_pixel = WWLCDPanel_GetPixel(lcd_panel, x, y);
|
||||
|
||||
return (!(old_pixel == current_pixel));
|
||||
}
|
||||
|
||||
WWLCDPanel WWLCDPanel_Create(int width, int height)
|
||||
{
|
||||
WWLCDPanel lcd_panel;
|
||||
int x, y;
|
||||
int x, y, i;
|
||||
|
||||
lcd_panel = (WWLCDPanel)malloc(sizeof(_WWLCDPanel));
|
||||
if (lcd_panel == NULL) Error("WWLCDPanel_Create", "Cannot allocate memory.");
|
||||
|
||||
WWLCDPanel_SetWidth( lcd_panel, width);
|
||||
WWLCDPanel_SetHeight(lcd_panel, height);
|
||||
lcd_panel->pixel =
|
||||
(unsigned char *)malloc(sizeof(unsigned char) *
|
||||
WWLCDPanel_GetWidth(lcd_panel) *
|
||||
WWLCDPanel_GetHeight(lcd_panel));
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
lcd_panel->pixel[i] =
|
||||
(unsigned char *)malloc(sizeof(unsigned char) *
|
||||
WWLCDPanel_GetWidth(lcd_panel) *
|
||||
WWLCDPanel_GetHeight(lcd_panel));
|
||||
}
|
||||
|
||||
for (y = 0; y < lcd_panel->height; y++) {
|
||||
for (x = 0; x < lcd_panel->width / 2; x++) {
|
||||
@@ -66,13 +109,19 @@ WWLCDPanel WWLCDPanel_Create(int width, int height)
|
||||
}
|
||||
}
|
||||
|
||||
WWLCDPanel_ResetCurrent(lcd_panel);
|
||||
WWLCDPanel_SetAllDraw(lcd_panel); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̤<EFBFBD><CCA4><EFBFBD><EFBFBD>褹<EFBFBD><E8A4B9> */
|
||||
|
||||
return (lcd_panel);
|
||||
}
|
||||
|
||||
WWLCDPanel WWLCDPanel_Destroy(WWLCDPanel lcd_panel)
|
||||
{
|
||||
int i;
|
||||
if (lcd_panel == NULL) return (NULL);
|
||||
if (lcd_panel->pixel) free(lcd_panel->pixel);
|
||||
for (i = 0; i < 2; i++) {
|
||||
if (lcd_panel->pixel[i]) free(lcd_panel->pixel[i]);
|
||||
}
|
||||
free(lcd_panel);
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
@@ -21,9 +21,17 @@ int WWLCDPanel_GetWidth( WWLCDPanel p);
|
||||
int WWLCDPanel_GetHeight(WWLCDPanel p);
|
||||
int WWLCDPanel_SetWidth( WWLCDPanel p, int n);
|
||||
int WWLCDPanel_SetHeight(WWLCDPanel p, int n);
|
||||
|
||||
int WWLCDPanel_ResetCurrent(WWLCDPanel p);
|
||||
int WWLCDPanel_ReverseCurrent(WWLCDPanel p);
|
||||
int WWLCDPanel_ResetAllDraw(WWLCDPanel p);
|
||||
int WWLCDPanel_SetAllDraw(WWLCDPanel p);
|
||||
int WWLCDPanel_IsAllDraw(WWLCDPanel p);
|
||||
|
||||
unsigned char * WWLCDPanel_GetPixelMap(WWLCDPanel p);
|
||||
int WWLCDPanel_GetPixel(WWLCDPanel lcd_panel, int x, int y);
|
||||
int WWLCDPanel_SetPixel(WWLCDPanel lcd_panel, int x, int y, int pixel);
|
||||
int WWLCDPanel_IsPixelChanged(WWLCDPanel lcd_panel, int x, int y);
|
||||
WWLCDPanel WWLCDPanel_Create(int width, int height);
|
||||
WWLCDPanel WWLCDPanel_Destroy(WWLCDPanel lcd_panel);
|
||||
|
||||
|
||||
@@ -14,8 +14,19 @@
|
||||
typedef struct _WWLCDPanel {
|
||||
int width;
|
||||
int height;
|
||||
/* 16<31><36><EFBFBD>Υ<EFBFBD><CEA5>顼<EFBFBD><E9A1BC><EFBFBD><EFBFBD><F3A1A5A3>Х<EFBFBD><D0A5>Ȥǣ<C8A4><C7A3>ԥ<EFBFBD><D4A5><EFBFBD><EFBFBD><EFBFBD>ʬ<EFBFBD>ξ<EFBFBD><CEBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
unsigned char * pixel;
|
||||
|
||||
/* X<><58><EFBFBD><EFBFBD><EFBFBD>Ф<EFBFBD><D0A4><EFBFBD><EFBFBD>٤餹<F2B8BAA4><E9A4B9><EFBFBD>ᡤ<EFBFBD>ӥåȥޥåפ<C3A5><D7A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD>ʬ<EFBFBD>Ͻ<CFBD><F1A4ADB4><EFBFBD><EFBFBD>ʤ<EFBFBD><CAA4>褦<EFBFBD>ˤ<EFBFBD><CBA4>롥 */
|
||||
/* pixel[current] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υӥåȥޥåפˤʤ롥 */
|
||||
/* pixel[1 - current] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υӥåȥޥåפˤʤ롥 */
|
||||
int current;
|
||||
|
||||
/* all_draw == 1 <20>ΤȤ<CEA4><C8A4>ϡ<EFBFBD><CFA1><EFBFBD><EFBFBD><EFBFBD>ʬ<EFBFBD><CAAC>̵<EFBFBD><CCB5><EFBFBD>Τǡ<CEA4> */
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>褹<EFBFBD>뤳<EFBFBD>Ȥ<C8A4><F2BCA8A4><EFBFBD> */
|
||||
int all_draw;
|
||||
|
||||
/* 16<31><36><EFBFBD>Υ<EFBFBD><CEA5>顼<EFBFBD><E9A1BC><EFBFBD><EFBFBD><F3A1A5A3>Х<EFBFBD><D0A5>Ȥǣ<C8A4><C7A3>ԥ<EFBFBD><D4A5><EFBFBD><EFBFBD><EFBFBD>ʬ<EFBFBD>ξ<EFBFBD><CEBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
unsigned char * pixel[2];
|
||||
} _WWLCDPanel;
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
85
XDisplay.c
85
XDisplay.c
@@ -358,16 +358,27 @@ int XDisplay_Sync(XDisplay x_display)
|
||||
|
||||
int XDisplay_DrawLCDWindow(XDisplay x_display, WWLCDPanel ww_lcd_panel)
|
||||
{
|
||||
int x, y, n;
|
||||
int px, py;
|
||||
int x, y;
|
||||
int px, py, ph;
|
||||
int num;
|
||||
XRectangle * rectangles;
|
||||
int n[16];
|
||||
XRectangle * rectangles[16];
|
||||
int pixel;
|
||||
int ww_lcd_width, ww_lcd_height;
|
||||
|
||||
/* <20><><EFBFBD>ܤ<EFBFBD><DCA4>Ƥ<EFBFBD><C6A4><EFBFBD><EFBFBD>ԥ<EFBFBD><D4A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϤޤȤ<DEA4><C8A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>褹<EFBFBD><E8A4B9><EFBFBD>Τǡ<CEA4><C7A1>ԥ<EFBFBD><D4A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ͤ<EFBFBD> */
|
||||
/* <20>ǰ<EFBFBD><C7B0>ξ<EFBFBD><CEBE><EFBFBD>(<28>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD>ͤΤȤ<CEA4>)<29>ǡ<EFBFBD>width * height / 2 <20>ˤʤ롥 */
|
||||
num =
|
||||
WWLCDPanel_GetHeight(ww_lcd_panel) * WWLCDPanel_GetWidth(ww_lcd_panel);
|
||||
rectangles = (XRectangle *)malloc(sizeof(XRectangle) * num);
|
||||
WWLCDPanel_GetHeight(ww_lcd_panel) * WWLCDPanel_GetWidth(ww_lcd_panel) / 2;
|
||||
|
||||
/*
|
||||
* <20><><EFBFBD><EFBFBD> malloc() <20>ϡ<EFBFBD><CFA1>ºݤˤϥ<CBA4><CFA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϤۤȤ<DBA4><C8A4>ɻ<EFBFBD><C9BB>Ѥ<EFBFBD><D1A4><EFBFBD><EFBFBD>Ƥ<EFBFBD><C6A4>ʤ<EFBFBD><CAA4>Τǡ<CEA4>
|
||||
* <20><><EFBFBD>Τ<EFBFBD><CEA4><EFBFBD><EFBFBD>ʤ<EFBFBD><CAA4>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD><EFBFBD>ɬ<EFBFBD>פ<EFBFBD><D7A4><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
for (pixel = 0; pixel < 16; pixel++) {
|
||||
n[pixel] = 0;
|
||||
rectangles[pixel] = (XRectangle *)malloc(sizeof(XRectangle) * num);
|
||||
}
|
||||
if (rectangles == NULL)
|
||||
Error("XDisplay_DrawLCDWindow", "Cannot allocate memory.");
|
||||
|
||||
@@ -376,37 +387,42 @@ int XDisplay_DrawLCDWindow(XDisplay x_display, WWLCDPanel ww_lcd_panel)
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD>ϥۥåȥ<C3A5><C8A5>ݥåȤˤʤ<CBA4><CAA4>Τǡ<CEA4><C7A1>Τ<EFBFBD><CEA4>Τ<EFBFBD><CEA4>˥<EFBFBD><CBA5>塼<EFBFBD>˥<CBA5><F3A5B0A4>뤳<EFBFBD><EBA4B3> */
|
||||
|
||||
for (pixel = 0; pixel < 16; pixel++) {
|
||||
n = 0;
|
||||
for (y = 0; y < ww_lcd_height; y++) {
|
||||
for (x = 0; x < ww_lcd_width; x++) {
|
||||
if (pixel == WWLCDPanel_GetPixel(ww_lcd_panel, x, y)) {
|
||||
px = (x * x_display->width ) / ww_lcd_width;
|
||||
py = (y * x_display->height) / ww_lcd_height;
|
||||
rectangles[n].x = px;
|
||||
rectangles[n].y = py;
|
||||
rectangles[n].width = (x+1) * x_display->width / ww_lcd_width - px;
|
||||
rectangles[n].height = (y+1) * x_display->height / ww_lcd_height- py;
|
||||
|
||||
/* <20><><EFBFBD>ܤ<EFBFBD><DCA4>Ƥ<EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD>Υԥ<CEA5><D4A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD><CFA1><EFBFBD><EFBFBD>Ϥ<EFBFBD><CFA4>ä<EFBFBD><C3A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>褹<EFBFBD><E8A4B9> */
|
||||
x++;
|
||||
while ( (x < ww_lcd_width) &&
|
||||
(pixel == WWLCDPanel_GetPixel(ww_lcd_panel, x, y)) ) {
|
||||
rectangles[n].width = (x+1) * x_display->width / ww_lcd_width - px;
|
||||
x++;
|
||||
}
|
||||
x--;
|
||||
|
||||
n++;
|
||||
}
|
||||
for (y = 0; y < ww_lcd_height; y++) {
|
||||
py = (y * x_display->height) / ww_lcd_height;
|
||||
ph = (y+1) * x_display->height / ww_lcd_height- py;
|
||||
for (x = 0; x < ww_lcd_width; x++) {
|
||||
if (!WWLCDPanel_IsPixelChanged(ww_lcd_panel, x, y)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
pixel = WWLCDPanel_GetPixel(ww_lcd_panel, x, y);
|
||||
px = (x * x_display->width ) / ww_lcd_width;
|
||||
rectangles[pixel][n[pixel]].x = px;
|
||||
rectangles[pixel][n[pixel]].y = py;
|
||||
rectangles[pixel][n[pixel]].width =
|
||||
(x+1) * x_display->width / ww_lcd_width - px;
|
||||
rectangles[pixel][n[pixel]].height = ph;
|
||||
|
||||
if (n > 0) {
|
||||
/* <20><><EFBFBD>ܤ<EFBFBD><DCA4>Ƥ<EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD>Υԥ<CEA5><D4A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD><CFA1><EFBFBD><EFBFBD>Ϥ<EFBFBD><CFA4>ä<EFBFBD><C3A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>褹<EFBFBD><E8A4B9> */
|
||||
x++;
|
||||
while ( (x < ww_lcd_width) &&
|
||||
(pixel == WWLCDPanel_GetPixel(ww_lcd_panel, x, y)) &&
|
||||
(WWLCDPanel_IsPixelChanged(ww_lcd_panel, x, y)) ) {
|
||||
rectangles[pixel][n[pixel]].width =
|
||||
(x+1) * x_display->width / ww_lcd_width - px;
|
||||
x++;
|
||||
}
|
||||
x--;
|
||||
|
||||
n[pixel]++;
|
||||
}
|
||||
}
|
||||
|
||||
for (pixel = 0; pixel < 16; pixel++) {
|
||||
if (n[pixel] > 0) {
|
||||
XFillRectangles(x_display->display,
|
||||
x_display->lcd_pixmap,
|
||||
x_display->color_gc[pixel],
|
||||
rectangles, n);
|
||||
rectangles[pixel], n[pixel]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -414,9 +430,14 @@ int XDisplay_DrawLCDWindow(XDisplay x_display, WWLCDPanel ww_lcd_panel)
|
||||
x_display->lcd_window, x_display->copy_gc,
|
||||
0, 0, x_display->width, x_display->height, 0, 0);
|
||||
|
||||
WWLCDPanel_ResetAllDraw(ww_lcd_panel);
|
||||
WWLCDPanel_ReverseCurrent(ww_lcd_panel);
|
||||
|
||||
XDisplay_Sync(x_display);
|
||||
|
||||
free(rectangles);
|
||||
for (pixel = 0; pixel < 16; pixel++) {
|
||||
free(rectangles[pixel]);
|
||||
}
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user