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

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

?? edit.c

?? ucgui源碼3.32
?? 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        : EDIT.c
Purpose     : emWin GSC button widget
---------------------------END-OF-HEADER------------------------------
*/

#include <stdlib.h>
#include <string.h>

#define EDIT_C       /* Required to generate intermodule data */

#include "EDIT.h"
#include "GUIDebug.h"
#include "GUI_Protected.h"
#include "EDIT_Private.h"

#if GUI_WINSUPPORT

/*********************************************************************
*
*       Private config defaults
*
**********************************************************************
*/

#ifndef EDIT_LOG_ENABLE
  #ifdef _DEBUG
    #define EDIT_LOG_ENABLE 0
  #else
    #define EDIT_LOG_ENABLE 0
  #endif
#endif

/* Define default fonts */
#ifndef EDIT_FONT_DEFAULT
  #define EDIT_FONT_DEFAULT &GUI_Font13_1
#endif

#ifndef EDIT_ALIGN_DEFAULT
  #define EDIT_ALIGN_DEFAULT GUI_TA_LEFT | GUI_TA_VCENTER
#endif

/* Define colors */
#ifndef EDIT_BKCOLOR0_DEFAULT
  #define EDIT_BKCOLOR0_DEFAULT 0xc0c0c0
#endif

#ifndef EDIT_BKCOLOR1_DEFAULT
  #define EDIT_BKCOLOR1_DEFAULT GUI_WHITE
#endif

#ifndef EDIT_TEXTCOLOR0_DEFAULT
  #define EDIT_TEXTCOLOR0_DEFAULT GUI_BLACK
#endif

#ifndef EDIT_TEXTCOLOR1_DEFAULT
  #define EDIT_TEXTCOLOR1_DEFAULT GUI_BLACK
#endif

#ifndef EDIT_BORDER_DEFAULT
  #define EDIT_BORDER_DEFAULT 1
#endif

#ifndef EDIT_XOFF
  #define EDIT_XOFF 2
#endif

/*********************************************************************
*
*       Static data
*
**********************************************************************
*/

static int _DefaultAlign              = EDIT_ALIGN_DEFAULT;
static int _DefaultBorder             = EDIT_BORDER_DEFAULT;
static const GUI_FONT * _pDefaultFont = EDIT_FONT_DEFAULT;

/*********************************************************************
*
*       Macros for internal use
*
**********************************************************************
*/

#if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
  #define OBJECT_ID 0x4569   /* Magic nubmer, should be unique if possible */
  #define INIT_ID(p)   p->DebugId = OBJECT_ID
  #define DEINIT_ID(p) p->DebugId = 0
#else
  #define INIT_ID(p)
  #define DEINIT_ID(p)
#endif

/*********************************************************************
*
*       Static routines
*
**********************************************************************
*/

#if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
EDIT_Obj* EDIT_h2p(EDIT_Handle h) {
  EDIT_Obj* p = (EDIT_Obj*)WM_HMEM2Ptr(h);
  if (p) {
    if (p->DebugId != OBJECT_ID) {
      GUI_DEBUG_ERROROUT("EDIT.C: Wrong handle type or Object not init'ed");
      return 0;
    }
  }
  return p;
}
#endif

/*********************************************************************
*
*       _Paint
*/
static void _Paint(EDIT_Obj* pObj) {
  int PixelLen, xSize, ySize, xPosText, xPosCursor, yPosText, yPosCursor, XSizeCursor, YSizeCursor;
  int IsEnabled;
  GUI_RECT rClient, rWindow;
  char * s;
  s = (char*) WM_HMEM2Ptr(pObj->hpText);
  GUI_DEBUG_LOG("BUTTON: _Paint(..)\n");
  if (pObj->Border) {
    GUI_SetBkColor(pObj->aBkColor[0]);
    GUI_Clear();
  }
  IsEnabled = WIDGET__IsEnabled(&pObj->Widget);
  /* Set clipping rectangle */
  WIDGET__GetInsideRect(&pObj->Widget, &rWindow);
  WM_SetUserClipRect(&rWindow);
  /* Calculate size */
  GUI_GetClientRect(&rClient);
  xSize = rClient.x1 - rClient.x0 + 1;
  ySize = rClient.y1 - rClient.y0 + 1;
  /* Draw background */
  GUI_SetBkColor (pObj->aBkColor[IsEnabled]);
  GUI_SetColor   (pObj->aTextColor[0]);
  GUI_Clear();
  /* Calculate length */
  GUI_SetFont    (pObj->pFont);
  PixelLen = GUI_GetStringDistX(s);
  /* Calculate size of cursor */
  YSizeCursor = GUI_GetFontDistY();
  if (pObj->EditMode == GUI_EDIT_MODE_INSERT) {
    if (pObj->XSizeCursor != 0) {
      XSizeCursor = pObj->XSizeCursor;
    } else {
      XSizeCursor = GUI_GetCharDistX(' ');
    }
  } else {
    if (pObj->CursorPos < (int)strlen(s))  {
      XSizeCursor = GUI_GetCharDistX(*(s + pObj->CursorPos));
    } else {
      XSizeCursor = pObj->XSizeCursor;
    }
  }
  /* Calculate X-pos */
  switch (pObj->Align & GUI_TA_HORIZONTAL) {
    case GUI_TA_CENTER:
      xPosCursor = (xSize - PixelLen + 1) / 2;
      xPosText = xSize / 2;
      break;
    case GUI_TA_LEFT:
      xPosCursor = pObj->Border + EDIT_XOFF;
      xPosText   = pObj->Border + EDIT_XOFF;
      break;
    case GUI_TA_RIGHT:
      xPosCursor = xSize - (pObj->Border + EDIT_XOFF) - PixelLen;
      xPosText   = xSize - (pObj->Border + EDIT_XOFF);
      break;
  }
  /* Calculate Y-pos */
  switch (pObj->Align & GUI_TA_VERTICAL) {
    case GUI_TA_TOP:
      yPosCursor = 0;
      yPosText = 0;
      break;
    case GUI_TA_BOTTOM:
      yPosCursor = ySize - YSizeCursor;
      yPosText = ySize;
      break;
    case GUI_TA_VCENTER:
      yPosCursor = (ySize - YSizeCursor + 1) / 2;
      yPosText = ySize / 2;
      break;
  }
  /* Display text */
  GUI_SetTextAlign(pObj->Align);
  GUI_DispStringAt(s, xPosText, yPosText);
  /* Display cursor */
  if (pObj->Widget.State & WIDGET_STATE_FOCUS) {
    int i;
    for (i = 0; i != pObj->CursorPos; i++) {
      xPosCursor += GUI_GetCharDistX(*(s + i));
    }
    GUI_InvertRect(xPosCursor, 
                   yPosCursor, 
                   xPosCursor + XSizeCursor - 1, 
                   yPosCursor + YSizeCursor - 1);
  }
  WM_SetUserClipRect(NULL);
  /* Draw the 3D effect (if configured) */
  WIDGET__EFFECT_DrawDown(&pObj->Widget);
}

/*********************************************************************
*
*       _Delete
*/
static void _Delete(EDIT_Obj* pObj) {
  WM_FREEPTR(&pObj->hpText);
}


/*********************************************************************
*
*       _SetCursor
*/
static void _SetCursor(EDIT_Handle hObj, EDIT_Obj* pObj, int x) {
  int xPos, xSize, PixelLen, Len;
  char * s = (char*) WM_HMEM2Ptr(pObj->hpText);
  const GUI_FONT *pOldFont = GUI_SetFont(pObj->pFont);
  xSize = WM_GetWindowSizeX(hObj);
  PixelLen = GUI_GetStringDistX(s);
  xPos = x;
  switch (pObj->Align & GUI_TA_HORIZONTAL) {
    case GUI_TA_CENTER:
      xPos -= (xSize - PixelLen + 1) / 2;
      break;
    case GUI_TA_LEFT:
      xPos -= (pObj->Border + EDIT_XOFF);
      break;
    case GUI_TA_RIGHT:
      xPos -= xSize - PixelLen - (pObj->Border + EDIT_XOFF);
      break;
  }
  Len = strlen(s);
  if (xPos < 0) {
    pObj->CursorPos = 0;
  } else if (xPos > PixelLen) {
    pObj->CursorPos = Len;
  } else {
    int i, x;
    for (i = 0, x = 0; (i < Len) && (x < xPos); i++) {
      int xLenChar = GUI_GetCharDistX(*(s + i));
      if (xPos < (x + xLenChar))
        break;
      x += xLenChar;
    }
    pObj->CursorPos = i;
    EDIT_Invalidate(hObj);
  }
  GUI_SetFont(pOldFont);
}

/*********************************************************************
*
*       _OnTouch
*/
static void _OnTouch(EDIT_Handle hObj, EDIT_Obj* pObj, WM_MESSAGE*pMsg) {
  GUI_TOUCH_tState* pState = (GUI_TOUCH_tState*)pMsg->Data.p;
  if (pMsg->Data.p) {  /* Something happened in our area (pressed or released) */
    if (pState->Pressed) {
      GUI_DEBUG_LOG1("EDIT__Callback(WM_TOUCH, Pressed, Handle %d)\n",1);
      _SetCursor(hObj, pObj, pState->x);
      WM_SetFocus(hObj);
    } else {
      GUI_DEBUG_LOG1("EDIT__Callback(WM_TOUCH, Released, Handle %d)\n",1);
    }
  } else {
    GUI_DEBUG_LOG1("_EDIT_Callback(WM_TOUCH, Moved out, Handle %d)\n",1);
  }
}

/*********************************************************************
*
*       Callback
*/
static void EDIT__Callback (WM_MESSAGE * pMsg) {
  int IsEnabled;
  EDIT_Handle hObj = (EDIT_Handle)pMsg->hWin;
  EDIT_Obj* pObj = (EDIT_Obj*)WM_HMEM2Ptr(hObj);
  IsEnabled = WIDGET__IsEnabled(&pObj->Widget);
  /* Let widget handle the standard messages */
  if (WIDGET_HandleActive(hObj, pMsg) == 0) {
    return;
  }
  switch (pMsg->MsgId) {
  case WM_TOUCH:
    if (IsEnabled) {
      _OnTouch(hObj, pObj, pMsg);
    }
    break;
  case WM_PAINT:
    GUI_DEBUG_LOG("EDIT: _Callback(WM_PAINT)\n");
    _Paint(pObj);
    return;
  case WM_DELETE:
    GUI_DEBUG_LOG("EDIT: _Callback(WM_DELETE)\n");
    _Delete(pObj);
    break;       /* No return here ... WM_DefaultProc needs to be called */
  case WM_KEY:
    if (IsEnabled) {
      if ( ((WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt >0) {
        int Key = ((WM_KEY_INFO*)(pMsg->Data.p))->Key;
        switch (Key) {
          case GUI_KEY_TAB:
            break;                    /* Send to parent by not doing anything */
          default:
            EDIT_AddKey(hObj, Key);
            return;
        }
      }
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品不卡在线观看| 日本久久电影网| av一二三不卡影片| 欧美日韩国产首页在线观看| 久久人人97超碰com| 亚洲日本va在线观看| 久久精品噜噜噜成人av农村| 91在线无精精品入口| 欧美一区二区在线看| 亚洲精品菠萝久久久久久久| 九一九一国产精品| 8v天堂国产在线一区二区| 中文字幕一区二区三区四区| 久久成人综合网| 欧美视频一区二区在线观看| 欧美国产1区2区| 久久精品噜噜噜成人av农村| 欧洲国内综合视频| 国产精品白丝在线| 成人精品小蝌蚪| 777精品伊人久久久久大香线蕉| 亚洲欧洲在线观看av| 久草在线在线精品观看| 欧美久久免费观看| 亚洲午夜精品17c| av资源站一区| 国产精品福利一区二区| 国产传媒久久文化传媒| 26uuu久久天堂性欧美| 日韩精品一二三四| 欧美老肥妇做.爰bbww| 亚洲不卡在线观看| 欧美日韩一区二区欧美激情| 一区二区在线观看视频在线观看| 白白色亚洲国产精品| 国产精品视频观看| 高清av一区二区| 欧美国产禁国产网站cc| 成av人片一区二区| 国产精品夫妻自拍| 91小视频在线观看| 亚洲色图欧洲色图婷婷| 91免费国产在线| 亚洲人成人一区二区在线观看 | 日韩午夜在线观看| 奇米777欧美一区二区| 欧美一二区视频| 蜜桃一区二区三区在线观看| 欧美成人aa大片| 国产一区91精品张津瑜| 欧美激情一区二区在线| 成人精品电影在线观看| 亚洲视频狠狠干| 欧美三级视频在线| 久久国产精品72免费观看| 国产日韩欧美高清在线| 不卡免费追剧大全电视剧网站| 国产精品久久精品日日| 欧美在线制服丝袜| 久久99蜜桃精品| 日本一区二区三区在线观看| jlzzjlzz亚洲日本少妇| 夜夜亚洲天天久久| 日韩精品一区二区在线| 国产成人激情av| 一区二区三区免费观看| 717成人午夜免费福利电影| 毛片一区二区三区| 亚洲欧洲日韩在线| 91精品国产91热久久久做人人| 加勒比av一区二区| 亚洲视频在线观看一区| 在线综合视频播放| 国产成人av影院| 亚洲制服丝袜一区| 久久久亚洲欧洲日产国码αv| 色综合天天综合网国产成人综合天| 一区二区高清视频在线观看| 欧美日韩五月天| 国产精品99久久久久久久女警| 亚洲综合小说图片| 久久这里只有精品首页| 在线观看成人免费视频| 国产在线视视频有精品| 亚洲精品你懂的| 久久久久久久久久久黄色| 色综合天天综合| 国产一区二区精品久久91| 亚洲国产一区二区在线播放| 2014亚洲片线观看视频免费| 精品污污网站免费看| gogogo免费视频观看亚洲一| 日韩av电影天堂| 一区二区三区.www| 亚洲欧洲性图库| 国产亚洲一区二区在线观看| 欧美日本一区二区三区| 成人av中文字幕| 精东粉嫩av免费一区二区三区| 亚洲精品日韩一| 国产欧美日韩亚州综合 | 国产91色综合久久免费分享| 亚洲成人av一区二区三区| 中文字幕在线观看不卡视频| 精品久久人人做人人爰| 欧美疯狂做受xxxx富婆| 91福利在线播放| 99久久综合精品| 久久久国产午夜精品| 欧美丰满美乳xxx高潮www| 91精品国产综合久久蜜臀| 3d动漫精品啪啪一区二区竹菊| 青青草成人在线观看| 欧美色综合天天久久综合精品| 国产91精品免费| 日韩电影网1区2区| 亚洲午夜私人影院| 天天免费综合色| 亚洲人精品午夜| 欧美日本免费一区二区三区| 国产乱子轮精品视频| 国产精品久久久久一区二区三区| 91激情五月电影| 欧美综合色免费| 欧美精品三级日韩久久| 日韩欧美在线影院| 亚洲美女电影在线| 亚洲一区二区三区美女| 波多野结衣欧美| 久久精品视频免费| 麻豆精品国产传媒mv男同| 欧美日韩免费电影| 亚洲综合视频在线观看| 9i看片成人免费高清| 国产精品久久看| 91久久线看在观草草青青| 国产亚洲欧美日韩在线一区| 精品在线观看免费| 欧美日韩免费高清一区色橹橹| 欧美日韩一区中文字幕| 69久久99精品久久久久婷婷| 亚洲国产精品国自产拍av| 亚洲国产中文字幕在线视频综合 | 欧美精品一区视频| 91精品啪在线观看国产60岁| 中文字幕日韩欧美一区二区三区| 亚洲综合偷拍欧美一区色| 国产综合久久久久久久久久久久| av午夜精品一区二区三区| 欧美日韩精品系列| 亚洲国产成人午夜在线一区 | 国产精品麻豆99久久久久久| 亚洲品质自拍视频网站| 亚洲不卡一区二区三区| 国产在线精品一区在线观看麻豆| 波多野结衣视频一区| 欧美卡1卡2卡| 中文一区一区三区高中清不卡| 一区二区国产视频| 国产精品综合久久| 欧美日韩激情在线| 国产欧美一区二区在线观看| 亚洲精品高清在线| 国产在线精品不卡| 91福利国产精品| 久久综合九色综合97婷婷女人| 成人免费小视频| 精品在线亚洲视频| 欧美撒尿777hd撒尿| 国产三区在线成人av| 亚洲成人免费观看| 国产成人精品影院| 666欧美在线视频| 亚洲欧洲综合另类在线| 久久99深爱久久99精品| 欧美四级电影在线观看| 欧美国产一区二区在线观看| 亚洲国产精品久久不卡毛片| 成人影视亚洲图片在线| 精品国产一区a| 午夜欧美在线一二页| 99久久婷婷国产综合精品| 日韩一二三区不卡| 欧美三级日韩三级| 一区二区三区**美女毛片| 久久精品人人做| 亚洲色欲色欲www| 粉嫩绯色av一区二区在线观看| www精品美女久久久tv| 免费成人美女在线观看.| 4438亚洲最大| 久久精品国产亚洲一区二区三区| 欧美日韩不卡一区| 亚洲精品高清视频在线观看| 欧美四级电影网| 国产精品影视天天线| 亚洲天堂av老司机| 欧美一级一区二区| 国产成人亚洲综合a∨婷婷| 91黄色免费观看|