1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /*****************************************************************************/
- /* ここから */
- /*****************************************************************************/
- #include "WWLCDPanelP.h"
- /*****************************************************************************/
- /* メンバ関数の定義 */
- /*****************************************************************************/
- int WWLCDPanel_GetWidth( WWLCDPanel p) { return (p->width ); }
- 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); }
- /* LCDは1ピクセル16色(4ビット必要) */
- int WWLCDPanel_GetPixel(WWLCDPanel lcd_panel, int x, int y)
- {
- unsigned char pixel;
- 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) / 2) + x / 2];
- if (x % 2) pixel = pixel >> 4;
- pixel &= 0x0f;
- return ((int)pixel);
- }
- 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) ||
- (y < 0) || (y > WWLCDPanel_GetHeight(lcd_panel) - 1) )
- return (-1);
- p = 0x0f;
- if (x % 2) p = p << 4;
- n = y * (WWLCDPanel_GetWidth(lcd_panel) / 2) + x / 2;
- lcd_panel->pixel[n] &= ~p;
- p = ((unsigned char)pixel) & 0x0f;
- if (x % 2) p = p << 4;
- lcd_panel->pixel[n] |= p;
- return (pixel);
- }
- WWLCDPanel WWLCDPanel_Create(int width, int height)
- {
- WWLCDPanel lcd_panel;
- int x, y;
- 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) / 2) *
- WWLCDPanel_GetHeight(lcd_panel));
- for (y = 0; y < lcd_panel->height; y++) {
- for (x = 0; x < lcd_panel->width / 2; x++) {
- WWLCDPanel_SetPixel(lcd_panel, x, y, 0x00);
- }
- }
- return (lcd_panel);
- }
- WWLCDPanel WWLCDPanel_Destroy(WWLCDPanel lcd_panel)
- {
- if (lcd_panel == NULL) return (NULL);
- if (lcd_panel->pixel) free(lcd_panel->pixel);
- free(lcd_panel);
- return (NULL);
- }
- /*****************************************************************************/
- /* ここまで */
- /*****************************************************************************/
- /*****************************************************************************/
- /* End of File. */
- /*****************************************************************************/
|