⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd-win32.c

📁 编译后直接运行的MP3播放器全部C语言源代码 一个包含FAT文件系统、系统引导 Boot、FLASH Driver等内容的
💻 C
字号:
/*************************************************************************** *             __________               __   ___. *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___ *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  / *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  < *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \ *                     \/            \/     \/    \/            \/ * $Id: lcd-win32.c,v 1.12 2003/12/23 23:41:44 hohensoh Exp $ * * Copyright (C) 2002 by Felix Arends * * All files in this archive are subject to the GNU General Public License. * See the file COPYING in the source tree root for full license agreement. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ****************************************************************************/#include <windows.h>#include <process.h>#include "uisw32.h"#include "lcd.h"#include "lcd-playersim.h"unsigned char lcd_framebuffer[LCD_HEIGHT/8][LCD_WIDTH]; /* the display */char bitmap[LCD_HEIGHT][LCD_WIDTH]; /* the ui display */BITMAPINFO2 bmi ={  {sizeof (BITMAPINFOHEADER),   LCD_WIDTH, -LCD_HEIGHT, 1, 8,   BI_RGB, 0, 0, 0, 2, 2,  },  {    //{UI_LCD_BGCOLOR, 0}, /* green background color */    {UI_LCD_BGCOLORLIGHT, 0}, /* green background color */    {UI_LCD_BLACK, 0}    /* black color */  }  }; /* bitmap information */#ifdef HAVE_LCD_CHARCELLS/* Defined in lcd-playersim.c */extern void lcd_print_char(int x, int y);extern bool lcd_display_redraw;extern unsigned char hardware_buffer_lcd[11][2];static unsigned char lcd_buffer_copy[11][2];#endif void lcd_set_invert_display(bool invert){    (void)invert;}/* lcd_update()   update lcd */void lcd_update(){    int x, y;    if (hGUIWnd == NULL)        _endthread ();#ifdef HAVE_LCD_CHARCELLS    for (y = 0; y < 2; y++)    {        for (x = 0; x < 11; x++)        {            if (lcd_display_redraw ||                lcd_buffer_copy[x][y] != hardware_buffer_lcd[x][y])            {                lcd_buffer_copy[x][y] = hardware_buffer_lcd[x][y];                lcd_print_char(x, y);            }        }    }    lcd_display_redraw = false;#endif    for (x = 0; x < LCD_WIDTH; x++)        for (y = 0; y < LCD_HEIGHT; y++)            bitmap[y][x] = ((lcd_framebuffer[y/8][x] >> (y & 7)) & 1);    InvalidateRect (hGUIWnd, NULL, FALSE);    /* natural sleep :) Bagder: why is this here? */    //Sleep (50);}void lcd_update_rect(int x_start, int y_start,                     int width, int height){    int x, y;    int xmax, ymax;    ymax = y_start + height;    xmax = x_start + width;        if (hGUIWnd == NULL)        _endthread ();    if(xmax > LCD_WIDTH)        xmax = LCD_WIDTH;    if(ymax >= LCD_HEIGHT)        ymax = LCD_HEIGHT;    for (x = x_start; x < xmax; x++)        for (y = y_start; y < ymax; y++)            bitmap[y][x] = ((lcd_framebuffer[y/8][x] >> (y & 7)) & 1);    /* Bagder: If I only knew how, I would make this call only invalidate       the actual rectangle we want updated here, this NULL thing here will       make the full rectangle updated! */    InvalidateRect (hGUIWnd, NULL, FALSE);}/* lcd_backlight()   set backlight state of lcd */void lcd_backlight (bool on){    if (on)    {        RGBQUAD blon = {UI_LCD_BGCOLORLIGHT, 0};        bmi.bmiColors[0] = blon;    }    else    {        RGBQUAD blon = {UI_LCD_BGCOLOR, 0};        bmi.bmiColors[0] = blon;    }    InvalidateRect (hGUIWnd, NULL, FALSE);}void drawdots(int color, struct coordinate *points, int count){    while (count--)    {        if (color)        {            DRAW_PIXEL(points[count].x, points[count].y);        }        else        {            CLEAR_PIXEL(points[count].x, points[count].y);        }    }}void drawrectangles(int color, struct rectangle *points, int count){    while (count--)    {        int x;        int y;        int ix;        int iy;        for (x = points[count].x, ix = 0; ix < points[count].width; x++, ix++)        {            for (y = points[count].y, iy = 0; iy < points[count].width; y++, iy++)            {                if (color)                {                    DRAW_PIXEL(x, y);                }                else                {                    CLEAR_PIXEL(x, y);                }            }        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -