亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lcdsim.c

?? 超強的人機介面GUI 3.90A版,附原碼,不可錯過
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
*********************************************************************************************************
*                                                uC/GUI
*                        Universal graphic software for embedded applications
*
*                       (c) Copyright 2002, Micrium Inc., Weston, FL
*                       (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
*              礐/GUI is protected by international copyright laws. Knowledge of the
*              source code may not be used to write a similar product. This file may
*              only be used in accordance with a license and should not be redistributed
*              in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File        : LCDSIM.C
Purpose     : Driver for Simulator under Windows
---------------------------END-OF-HEADER------------------------------
*/

#include <windows.h>
#include <memory.h>
#include <math.h>

#include "LCD.h"
#include "GUI.h"
#include "LCDSIM.h"
#include "LCDSIM_Private.h"
#include "SIM.h"

/*********************************************************************
*
*       Defines
*
**********************************************************************
*/
#define MARK_MODIFIED(LayerIndex)         { if (_apFix[LayerIndex]) (*(int*)(_apFix[LayerIndex] + LCDSIM_OFF_MODIFY_CNT))++; }
#define MARK_LUT_MODIFIED(LayerIndex)     { ++_LUT_ModifyCnt; if (_apFix[LayerIndex]) *(int*)(_apFix[LayerIndex] + LCDSIM_OFF_LUT_MODIFY_CNT) = _LUT_ModifyCnt; }
#define XY2PTR(x,y, LayerIndex)           ((U8*) (_apaaPixel[LayerIndex] + (    x + _aBytesPerLine[LayerIndex] * y)))
#define XY2PTR_DWORD(x,y, LayerIndex)     ((U32*)(_apaaPixel[LayerIndex] + (4 * x + _aBytesPerLine[LayerIndex] * y)))
#define RETURN_IF_NOT_INITIALIZED(rvalue) if (!_aBPP[0]) return rvalue;
#define RECTWIDTH(lpRect)                 ((lpRect)->right - (lpRect)->left +1)
#define RECTHEIGHT(lpRect)                ((lpRect)->bottom - (lpRect)->top +1)

#ifdef WIN32
  #ifndef ASSERT
    #ifdef _DEBUG
      #define ASSERT(Exp) if (!(Exp)) SIM_ErrorOut("LCDSim.c - Assertion failed: " #Exp);
    #else
      #define ASSERT(Exp)
    #endif
  #endif
#endif

#ifdef LCD_ASSERT
  #undef LCD_ASSERT
#endif
#define LCD_ASSERT(v) ASSERT(v)

#ifdef _MSC_VER
  #define INLINE __forceinline
#else
  #define INLINE
#endif

/*********************************************************************
*
*       Global data
*
**********************************************************************
*/
int LCDSIM_aLCDColorWhite[LCDSIM_MAX_DISPLAYS];
int LCDSIM_aLCDColorBlack[LCDSIM_MAX_DISPLAYS];

/*********************************************************************
*
*       Static data
*
**********************************************************************
*/
static GUI_PID_STATE _State;
static U8* _apaaPixel[LCDSIM_MAX_DISPLAYS];      // pointer to pixel data (video memory)
static U8* _apFix[LCDSIM_MAX_DISPLAYS];          // pointer to data area which contains display info

static int         _NumDisplays;
static int         _LUT_ModifyCnt;
static int         _aBytesPerLine[LCDSIM_MAX_DISPLAYS];
static int         _aFixedPalette[LCDSIM_MAX_DISPLAYS];
static int         _aXSize[LCDSIM_MAX_DISPLAYS];
static int         _aYSize[LCDSIM_MAX_DISPLAYS];
static int         _aVXSize[LCDSIM_MAX_DISPLAYS];
static int         _aVYSize[LCDSIM_MAX_DISPLAYS];
static int         _aBPP[LCDSIM_MAX_DISPLAYS];
static int         _aNumColors[LCDSIM_MAX_DISPLAYS];
static BITMAPINFO* _apBitmapInfo[LCDSIM_MAX_DISPLAYS];

/*********************************************************************
*
*       Static code
*
**********************************************************************
*/
/*********************************************************************
*
*       _CheckBreak: Allow break in debug build
*/
#ifdef _DEBUG
static void _CheckBreak(int x, int y, int LayerIndex) {
  static int LayerIndex_Break = -1;
  static int X_Break = -1;
  static int Y_Break = -1;
  static int BreakCnt;
  if (LayerIndex_Break != -1) {
    if (   ((x == X_Break) | (X_Break == -1))
        && ((y == Y_Break) | (Y_Break == -1))
        && (LayerIndex == LayerIndex_Break))
    {
      BreakCnt++;     // Set breakpoint here !!!
    }
  }
}
#endif

/*********************************************************************
*
*         _NotifyMouseState
*
* Informs the application that the mouse state has changed
*/
static void _NotifyMouseState(void) {
  if (_State.Pressed) {
    GUI_TOUCH_StoreState(_State.x, _State.y);
  } else {
    GUI_TOUCH_StoreState(-1, -1);
  }
  GUI_MOUSE_StoreState(&_State);
}

/*********************************************************************
*
*       _ColorRef2Color
*/
INLINE static U32 _ColorRef2Color(COLORREF ColorRef) {
  return (ColorRef & (255 << 8)) | ((ColorRef & 255) << 16) | ((ColorRef & (255 << 16)) >> 16);
}

/*********************************************************************
*
*       _ColorIndex2COLORREF
*/
INLINE static U32 _ColorIndex2COLORREF(int Index16, int LayerIndex) {
  static U32 _Color;
  static int _Index16_Cache = -1;
  if (_Index16_Cache != Index16) {
    _Index16_Cache = Index16;
    _Color = _ColorRef2Color(LCD_Index2ColorEx(Index16, LayerIndex));
  }
  return _Color;
}

/*********************************************************************
*
*         _COLORREF2Index
*/
static U16 _COLORREF2Index(COLORREF ColorRef) {
  U32 Color;
  Color = _ColorRef2Color(ColorRef);
  return LCD_Color2Index(Color);
}

/*********************************************************************
*
*         _Filter1
*/
static int _Filter1(int Color, int Black, int White, int Shift) {
  Color = (Color >> Shift) & 255;
  White = (White >> Shift) & 255;
  Black = (Black >> Shift) & 255;
  return Black + Color * (White - Black) / 255;
}

/*********************************************************************
*
*         _FilterColor
*/
static int _FilterColor(int Color, int Black, int White) {
  int r, g, b;
  r  = _Filter1(Color, Black, White,  0);
  g  = _Filter1(Color, Black, White,  8);
  b  = _Filter1(Color, Black, White, 16);
  return r | (g <<8) | (b << 16);
}

/*********************************************************************
*
*       Exported code
*
**********************************************************************
*/
/*********************************************************************
*
*         LCDSIM_Init()
*
* Purpose:
* Allocate & Initialize the shared memory area and create
* the bitmap used for display and as simulated video memory.
* The bitmap will be 8bpp for index color modes (LUT) with no more than
* 8 bpp, 24 bpp for all other modes.
* 
*/
char* LCDSIM_Init(void) {
  int i, j;
  int NumColors;
  //
  // Get LCD info from driver
  //
  _NumDisplays = LCD_GetNumLayers();
  for (i = 0; i < LCDSIM_MAX_DISPLAYS; i++) {
    if (!LCDSIM_aLCDColorWhite[i]) {
      LCDSIM_aLCDColorWhite[i] = 0xffffff;
    }
  }
  for (i = 0; i < _NumDisplays ; i++) {
    int XSize             = LCD_GetXSizeEx(i) * LCD_GetXMagEx(i);
    int YSize             = LCD_GetYSizeEx(i) * LCD_GetXMagEx(i);
    int BPP               = LCD_GetBitsPerPixel_L0Ex(i);
    int BytesPerLine      = (BPP <= 8) ? (XSize + 3) & ~3 : (4 * XSize + 3) & ~3;
    int VXSize            = LCD_GetVXSizeEx(i);
    int VYSize            = LCD_GetVYSizeEx(i);
    int DeltaMode         = LCD_GetDeltaModeEx(i);
    if (DeltaMode) {
      NumColors = 1 << BPP;
    } else {
      NumColors = LCD_GetNumColorsEx(i);
    }
    //
    // Alloc shared memory
    //
    {
      char ac[80] = "emWinLCDMap";
      int sizeofSMem = 0x400000+4096;  // Use 4MB to be on the safe side ...
            HANDLE hMap;
            U8*    pSMem;
      if (i) {
        int len = strlen(ac);
        ac[len]   = '0' + i;
        ac[len+1] = 0;
      }
            hMap    = CreateFileMapping((HANDLE)0xffffffff, NULL, PAGE_READWRITE, 0, sizeofSMem, ac);
            pSMem   = (U8*)MapViewOfFile(hMap, FILE_MAP_WRITE | FILE_MAP_READ, 0, 0, sizeofSMem);
            if (!pSMem) {
        return "Could not alloc Server data ...";
            }
      _apFix[i]      = pSMem;
      _apaaPixel[i]  = pSMem+4096;
    }
    _aXSize[i]        = XSize;
    _aYSize[i]        = YSize;
    _aVXSize[i]       = VXSize;
    _aVYSize[i]       = VYSize;
    _aBPP[i]          = LCD_GetBitsPerPixel_L0Ex(i);
    _aFixedPalette[i] = LCD_GetFixedPaletteEx(i);
    _aNumColors[i]    = NumColors;
    _aBytesPerLine[i] = BytesPerLine;
    //
    // Init shared memory and static parameter data
    //
    memset(_apFix[i],0, 4096);
    memset(_apaaPixel[i],0, BytesPerLine * YSize);
    strcpy((char*)_apFix[i], "emWin GSC Simulation");
          *(int*)(_apFix[i] + LCDSIM_OFF_XSIZE) = XSize;
          *(int*)(_apFix[i] + LCDSIM_OFF_YSIZE) = YSize;
          *(int*)(_apFix[i] + LCDSIM_OFF_VXSIZE) = VXSize;
          *(int*)(_apFix[i] + LCDSIM_OFF_VYSIZE) = VYSize;
  //    *(int*)(_apFix[i] + LCDSIM_OFF_CONTROLLER) = LCD_CONTROLLER;
          *(int*)(_apFix[i] + LCDSIM_OFF_BPP) = BPP;
          *(int*)(_apFix[i] + LCDSIM_OFF_NUMCOLORS) = NumColors;
          *(int*)(_apFix[i] + LCDSIM_OFF_DELTA_MODE) = DeltaMode;
          _apBitmapInfo[i] = (BITMAPINFO*) (_apFix[i] + 256);
  // Init simulation colors
    if (BPP == LCD_GetBitsPerPixelEx(i)) {
      if (BPP <= 8) {
        for (j = 0; j < NumColors; j++) {
          LCD_COLOR color = LCD_Index2ColorEx(j, i);
          LCDSIM_SetLUTEntry((U8)j, color, i);
        }
      }
    } else {
      for (j = 0; j < NumColors; j++) {
        LCD_COLOR Color = j * 0x111111;
        LCDSIM_SetLUTEntry((U8)j, Color, i);
      }
    }
	  {
		  //
		  // Init BITMAPINFO
		  //
		  BITMAPINFO* pBitmapInfo;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品久久人人爱| 91在线国产福利| av在线不卡免费看| 91精品国产综合久久福利| 国产精品久久久久久久久快鸭| 香蕉成人啪国产精品视频综合网| 国产成人精品一区二区三区四区| 欧美一区二区三区四区在线观看 | 色丁香久综合在线久综合在线观看| 日韩欧美一级二级三级 | 精品电影一区二区| 亚洲综合在线观看视频| 成人永久免费视频| 欧美电影免费观看高清完整版在 | 欧美色中文字幕| 国产精品毛片久久久久久久| 国产又黄又大久久| 欧美一卡2卡3卡4卡| 亚洲国产一区二区三区| 91麻豆精品一区二区三区| 国产欧美一区二区精品仙草咪 | 国产成人av影院| 欧美成人一级视频| 麻豆精品久久久| 在线综合+亚洲+欧美中文字幕| 亚洲一区免费在线观看| 91麻豆免费视频| 亚洲三级视频在线观看| 成人激情小说网站| 中文字幕一区二区三区在线播放| 国产高清不卡一区| 久久久久国产精品麻豆ai换脸 | 色婷婷av一区| 亚洲欧美日韩一区二区| 成人精品免费网站| 国产精品欧美久久久久无广告| 国产福利一区在线| 国产精品蜜臀av| av在线播放不卡| 亚洲免费观看高清| 欧美在线观看一区二区| 天堂蜜桃一区二区三区 | 国产亚洲欧美色| 粉嫩高潮美女一区二区三区| 国产精品美女久久久久久久久 | 欧美激情在线一区二区三区| 国产盗摄视频一区二区三区| 欧美激情在线一区二区| 99精品在线观看视频| 亚洲一区在线免费观看| 欧美日韩精品一区二区三区| 亚洲成av人片www| 日韩欧美成人激情| 懂色av中文一区二区三区 | 久久久久久久综合色一本| 国产成人综合网站| 亚洲欧美日韩国产一区二区三区 | av电影在线不卡| 亚洲国产日韩a在线播放性色| 7777精品伊人久久久大香线蕉经典版下载| 美女www一区二区| 国产日韩欧美高清在线| 在线观看日韩av先锋影音电影院| 午夜一区二区三区在线观看| 精品999在线播放| 91丨国产丨九色丨pron| 美女看a上一区| 国产精品久久久久久久久快鸭| 欧美探花视频资源| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 久久久精品免费观看| 9色porny自拍视频一区二区| 天天综合色天天| 亚洲国产精品高清| 337p亚洲精品色噜噜噜| 岛国一区二区在线观看| 日韩国产在线观看一区| 国产精品丝袜91| 日韩亚洲欧美在线| 91网站在线观看视频| 狠狠色伊人亚洲综合成人| 亚洲精品免费视频| 国产日韩欧美a| 777色狠狠一区二区三区| 99久久国产综合精品色伊| 蜜臀99久久精品久久久久久软件| 自拍av一区二区三区| 久久婷婷久久一区二区三区| 欧美人与z0zoxxxx视频| 久久精品噜噜噜成人av农村| 亚洲日穴在线视频| 精品精品国产高清a毛片牛牛| 91麻豆国产香蕉久久精品| 国产一区在线看| 奇米精品一区二区三区在线观看 | 日本高清成人免费播放| 国产福利不卡视频| 乱一区二区av| 天天影视色香欲综合网老头| 一区二区三区在线不卡| 国产精品久久久久影院亚瑟| 久久精品在线观看| 亚洲精品在线一区二区| 日韩一区二区三区高清免费看看| 欧美亚一区二区| 色菇凉天天综合网| 99精品桃花视频在线观看| 欧美色图在线观看| 99re成人在线| 波多野结衣中文字幕一区二区三区 | 狂野欧美性猛交blacked| 香蕉影视欧美成人| 亚洲成在人线免费| 亚洲国产综合人成综合网站| 亚洲中国最大av网站| 一区二区欧美国产| 亚洲国产日韩综合久久精品| 一区二区国产视频| 亚洲午夜电影在线| 五月天欧美精品| 蜜臀av性久久久久蜜臀aⅴ四虎 | 欧美一级高清片| 日韩欧美第一区| 国产亚洲污的网站| 国产精品欧美久久久久一区二区| 国产精品久久看| 亚洲激情欧美激情| 婷婷久久综合九色综合绿巨人| 五月天视频一区| 激情另类小说区图片区视频区| 国产精品原创巨作av| 成人免费毛片嘿嘿连载视频| 一本色道久久综合狠狠躁的推荐 | 一区二区三区不卡视频在线观看| 亚洲自拍偷拍麻豆| 日本不卡免费在线视频| 国产剧情一区在线| 波多野结衣亚洲一区| 欧美天堂一区二区三区| 日韩欧美国产电影| 国产精品高潮久久久久无| 亚洲在线视频免费观看| 日本伊人精品一区二区三区观看方式| 久久精品国产99久久6| 成人精品视频一区| 国产女人aaa级久久久级| 亚洲天堂网中文字| 青青草原综合久久大伊人精品优势| 国产精品正在播放| 欧美日韩在线播放三区四区| 26uuuu精品一区二区| 亚洲免费视频中文字幕| 日本欧美肥老太交大片| 成人免费看的视频| 欧美二区三区91| 国产精品女人毛片| 日本欧美一区二区在线观看| caoporn国产精品| 欧美一区二区三区免费视频| 亚洲国产精品传媒在线观看| 亚洲高清不卡在线| 成人黄色a**站在线观看| 3atv在线一区二区三区| 亚洲欧美日韩中文播放| 九九热在线视频观看这里只有精品| 色综合中文字幕| 欧美精品一区男女天堂| 一区二区三区欧美| 国产盗摄一区二区| 日韩欧美国产三级电影视频| 伊人色综合久久天天| 国产高清无密码一区二区三区| 欧美精品久久久久久久多人混战 | 亚洲午夜羞羞片| 成人精品视频.| xf在线a精品一区二区视频网站| 亚洲一区二区三区视频在线| 波多野结衣91| 国产欧美视频一区二区三区| 久久国内精品自在自线400部| 欧美中文一区二区三区| 国产精品久久久久国产精品日日| 激情图区综合网| 91精品国产综合久久久蜜臀粉嫩 | 奇米在线7777在线精品| 色婷婷综合久久久中文一区二区| 日本一二三不卡| 国产iv一区二区三区| 2023国产一二三区日本精品2022| 日韩av一区二区三区四区| 在线免费观看不卡av| 亚洲日本va午夜在线电影| 成人av在线看| 国产精品每日更新| 波多野结衣中文一区| 国产精品免费丝袜| 91在线丨porny丨国产| **网站欧美大片在线观看| 成人高清伦理免费影院在线观看| 国产日韩欧美在线一区|