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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? graph.c

?? UC_GUI開發(fā)源代碼,里面含有范例,源文件
?? C
?? 第 1 頁 / 共 2 頁
字號:
      GUI_DEBUG_ERROROUT("GRAPH.c: Wrong handle type or Object not init'ed");
      return 0;
    }
  }
  return p;
}
#endif

/*********************************************************************
*
*       Exported routines:  Private functions
*
**********************************************************************
*/
/*********************************************************************
*
*       GRAPH__AddValue
*/
void GRAPH__AddValue(GRAPH_DATA_OBJ * pDataObj, void * pData, void * pValue, int Size) {
  if (pDataObj->PaintObj.hGraph) {
    if (pDataObj->NumItems == pDataObj->MaxNumItems) {
      memmove((U8 *)pData, (U8 *)pData + Size, Size * (pDataObj->MaxNumItems - 1));
      memmove((U8 *)pData + Size * (pDataObj->NumItems - 1), pValue, Size);
    } else {
      memmove((U8 *)pData + Size * pDataObj->NumItems++, pValue, Size);
    }
    _InvalidateGraph(pDataObj->PaintObj.hGraph);
  }
}

/*********************************************************************
*
*       Exported routines:  Callback
*
**********************************************************************
*/
/*********************************************************************
*
*       GRAPH_Callback
*/
void GRAPH_Callback (WM_MESSAGE * pMsg) {
  int Result, ManageScrollBars = 0;
  GRAPH_Handle hObj;
  GRAPH_OBJ  * pObj;
  hObj = pMsg->hWin;
  pObj = (GRAPH_OBJ *)GUI_ALLOC_h2p(hObj); /* Don't use use WIDGET_H2P because WIDGET_INIT_ID() has not be called at this point */
  /* Let widget handle the standard messages */
  if (pMsg->MsgId == WM_WIDGET_SET_EFFECT) {
    ManageScrollBars = 1;
  }
  Result = WIDGET_HandleActive(hObj, pMsg);
  if (ManageScrollBars) {
    _ManageScrollBars(pObj, hObj);
  }
  if (!Result) {
    return;
  }
  switch (pMsg->MsgId) {
  case WM_SIZE:
    _ManageScrollBars(pObj, hObj);
    break;
  case WM_PAINT:
    _OnPaint(pObj, hObj, (GUI_RECT *)pMsg->Data.p);
    return;
  case WM_DELETE:
    _OnDelete(pObj);
    return;
  case WM_NOTIFY_PARENT:
    switch (pMsg->Data.v) {
    case WM_NOTIFICATION_VALUE_CHANGED:
      if (pMsg->hWinSrc  == WM_GetScrollbarV(hObj)) {
        _OnScrollValueChanged(pObj, pMsg->hWin, pMsg->hWinSrc);
      } else if (pMsg->hWinSrc == WM_GetScrollbarH(hObj)) {
        _OnScrollValueChanged(pObj, pMsg->hWin, pMsg->hWinSrc);
      }
      break;
    case WM_NOTIFICATION_SCROLLBAR_ADDED:
      #if WIDGET_USE_PARENT_EFFECT
        WIDGET_SetEffect(pMsg->hWinSrc, pObj->Widget.pEffect);
      #endif
      break;
    }
  }
  WM_DefaultProc(pMsg);
}

/*********************************************************************
*
*       Exported routines:  Create
*
**********************************************************************
*/
/*********************************************************************
*
*       GRAPH_CreateEx
*/
GRAPH_Handle GRAPH_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
                            int WinFlags, int ExFlags, int Id)
{
  GRAPH_Handle hObj;
  WM_LOCK();
  hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WinFlags, GRAPH_Callback,
                                sizeof(GRAPH_OBJ) - sizeof(WM_Obj));
  if (hObj) {
    GRAPH_OBJ * pObj;
    pObj = (GRAPH_OBJ *)GUI_ALLOC_h2p(hObj); /* Don't use use WIDGET_H2P because WIDGET_INIT_ID() has not be called at this point */
    /* Init sub-classes */
    GUI_ARRAY_CREATE(&pObj->GraphArray);
    GUI_ARRAY_CREATE(&pObj->ScaleArray);
    /* Init widget specific variables */
    WIDGET__Init(&pObj->Widget, Id, 0);
    /* Init member variables */
    GRAPH_INIT_ID(pObj);
    pObj->Props = GRAPH__DefaultProps;
    pObj->Flags = ExFlags;
  }
  WM_UNLOCK();
  return hObj;
}

/*********************************************************************
*
*       GRAPH_AttachData
*/
void GRAPH_AttachData(GRAPH_Handle hObj, GRAPH_DATA_Handle hData) {
  if (hObj) {
    GRAPH_OBJ * pObj;
    GRAPH_DATA_OBJ * pDataObj;
    WM_LOCK();
    pObj = GRAPH_H2P(hObj);
    pDataObj = (GRAPH_DATA_OBJ *)GUI_ALLOC_h2p(hData);
    pDataObj->PaintObj.hGraph = hObj;
    GUI_ARRAY_AddItem(&pObj->GraphArray, &hData, sizeof(GRAPH_DATA_Handle));
    WM_InvalidateWindow(hObj);
    WM_UNLOCK();
  }
}

/*********************************************************************
*
*       GRAPH_AttachScale
*/
void GRAPH_AttachScale(GRAPH_Handle hObj, GRAPH_SCALE_Handle hScale) {
  if (hObj) {
    GRAPH_OBJ * pObj;
    GRAPH_SCALE_OBJ * pScaleObj;
    WM_LOCK();
    pObj = GRAPH_H2P(hObj);
    pScaleObj = (GRAPH_SCALE_OBJ *)GUI_ALLOC_h2p(hScale);
    pScaleObj->PaintObj.hGraph = hObj;
    GUI_ARRAY_AddItem(&pObj->ScaleArray, &hScale, sizeof(GRAPH_SCALE_Handle));
    WM_InvalidateWindow(hObj);
    WM_UNLOCK();
  }
}

/*********************************************************************
*
*       GRAPH_SetColor
*/
GUI_COLOR GRAPH_SetColor(GRAPH_Handle hObj, GUI_COLOR Color, unsigned Index) {
  GUI_COLOR OldColor = 0;
  if (hObj) {
    GRAPH_OBJ * pObj;
    WM_LOCK();
    pObj = GRAPH_H2P(hObj);
    if (Index < GUI_COUNTOF(pObj->Props.aColor)) {
      OldColor = pObj->Props.aColor[Index];
      if (pObj->Props.aColor[Index] != Color) {
        pObj->Props.aColor[Index] = Color;
        WM_InvalidateWindow(hObj);
      }
    }
    WM_UNLOCK();
  }
  return OldColor;
}

/*********************************************************************
*
*       GRAPH_SetGridVis
*/
unsigned GRAPH_SetGridVis(GRAPH_Handle hObj, unsigned OnOff) {
  unsigned OldValue = 0;
  if (hObj) {
    GRAPH_OBJ * pObj;
    WM_LOCK();
    pObj = GRAPH_H2P(hObj);
    OldValue = pObj->ShowGrid;
    if ((unsigned)pObj->ShowGrid != OnOff) {
      pObj->ShowGrid = OnOff ? 1 : 0;
      WM_InvalidateWindow(hObj);
    }
    WM_UNLOCK();
  }
  return OldValue;
}

/*********************************************************************
*
*       GRAPH_SetGridDistX
*/
unsigned GRAPH_SetGridDistX(GRAPH_Handle hObj, unsigned Value) {
  unsigned OldValue = 0;
  if (hObj) {
    GRAPH_OBJ * pObj;
    WM_LOCK();
    pObj = GRAPH_H2P(hObj);
    OldValue = pObj->Props.GridSpacingX;
    if (pObj->Props.GridSpacingX != Value) {
      pObj->Props.GridSpacingX = Value;
      WM_InvalidateWindow(hObj);
    }
    WM_UNLOCK();
  }
  return OldValue;
}

/*********************************************************************
*
*       GRAPH_SetGridDistY
*/
unsigned GRAPH_SetGridDistY(GRAPH_Handle hObj, unsigned Value) {
  unsigned OldValue = 0;
  if (hObj) {
    GRAPH_OBJ * pObj;
    WM_LOCK();
    pObj = GRAPH_H2P(hObj);
    OldValue = pObj->Props.GridSpacingY;
    if (pObj->Props.GridSpacingY != Value) {
      pObj->Props.GridSpacingY = Value;
      WM_InvalidateWindow(hObj);
    }
    WM_UNLOCK();
  }
  return OldValue;
}

/*********************************************************************
*
*       GRAPH_SetGridOffY
*/
unsigned GRAPH_SetGridOffY(GRAPH_Handle hObj, unsigned Value) {
  unsigned OldValue = 0;
  if (hObj) {
    WM_LOCK();
    OldValue = _SetGridOffY(GRAPH_H2P(hObj), hObj, Value);
    WM_UNLOCK();
  }
  return OldValue;
}

/*********************************************************************
*
*       GRAPH_SetBorder
*/
void GRAPH_SetBorder(GRAPH_Handle hObj, unsigned BorderL, unsigned BorderT, unsigned BorderR, unsigned BorderB) {
  if (hObj) {
    GRAPH_OBJ * pObj;
    WM_LOCK();
    pObj = GRAPH_H2P(hObj);
    pObj->Props.BorderL = BorderL;
    pObj->Props.BorderT = BorderT;
    pObj->Props.BorderR = BorderR;
    pObj->Props.BorderB = BorderB;
    _ManageScrollBars(pObj, hObj);
    WM_InvalidateWindow(hObj);
    WM_UNLOCK();
  }
}

/*********************************************************************
*
*       GRAPH_SetUserDraw
*/
void GRAPH_SetUserDraw(GRAPH_Handle hObj, void (* pUserDraw)(WM_HWIN hObj, int Stage)) {
  if (hObj) {
    GRAPH_OBJ * pObj;
    WM_LOCK();
    pObj = GRAPH_H2P(hObj);
    pObj->pUserDraw = pUserDraw;
    WM_InvalidateWindow(hObj);
    WM_UNLOCK();
  }
}

/*********************************************************************
*
*       GRAPH_SetVSizeX
*/
unsigned GRAPH_SetVSizeX(GRAPH_Handle hObj, unsigned Value) {
  unsigned OldValue = 0;
  if (hObj) {
    GRAPH_OBJ * pObj;
    WM_LOCK();
    pObj = GRAPH_H2P(hObj);
    OldValue = pObj->RangeX;
    if (pObj->RangeX != Value) {
      pObj->RangeX = Value;
      _ManageScrollBars(pObj, hObj);
      WM_InvalidateWindow(hObj);
    }
    WM_UNLOCK();
  }
  return OldValue;
}

/*********************************************************************
*
*       GRAPH_SetVSizeY
*/
unsigned GRAPH_SetVSizeY(GRAPH_Handle hObj, unsigned Value) {
  unsigned OldValue = 0;
  if (hObj) {
    GRAPH_OBJ * pObj;
    WM_LOCK();
    pObj = GRAPH_H2P(hObj);
    OldValue = pObj->RangeY;
    if (pObj->RangeY != Value) {
      pObj->RangeY = Value;
      _ManageScrollBars(pObj, hObj);
      WM_InvalidateWindow(hObj);
    }
    WM_UNLOCK();
  }
  return OldValue;
}

/*********************************************************************
*
*       GRAPH_SetGridFixedX
*/
unsigned GRAPH_SetGridFixedX(GRAPH_Handle hObj, unsigned OnOff) {
  unsigned OldValue = 0;
  if (hObj) {
    GRAPH_OBJ * pObj;
    WM_LOCK();
    pObj = GRAPH_H2P(hObj);
    OldValue = (pObj->Flags & GRAPH_CF_GRID_FIXED_X) ? 1 : 0;
    if (OldValue & !OnOff) {
      pObj->Flags &= ~GRAPH_CF_GRID_FIXED_X;
      WM_InvalidateWindow(hObj);
    } else if (!OldValue & OnOff) {
      pObj->Flags |= GRAPH_CF_GRID_FIXED_X;
      WM_InvalidateWindow(hObj);
    }
    WM_UNLOCK();
  }
  return OldValue;
}

/*********************************************************************
*
*       GRAPH_SetLineStyleH
*/
U8 GRAPH_SetLineStyleH(GRAPH_Handle hObj, U8 Value) {
  U8 OldValue = 0;
  if (hObj) {
    GRAPH_OBJ * pObj;
    WM_LOCK();
    pObj = GRAPH_H2P(hObj);
    OldValue = pObj->LineStyleH;
    if (OldValue != Value) {
      pObj->LineStyleH = Value;
      WM_InvalidateWindow(hObj);
    }
    WM_UNLOCK();
  }
  return OldValue;
}

/*********************************************************************
*
*       GRAPH_SetLineStyleV
*/
U8 GRAPH_SetLineStyleV(GRAPH_Handle hObj, U8 Value) {
  U8 OldValue = 0;
  if (hObj) {
    GRAPH_OBJ * pObj;
    WM_LOCK();
    pObj = GRAPH_H2P(hObj);
    OldValue = pObj->LineStyleV;
    if (OldValue != Value) {
      pObj->LineStyleV = Value;
      WM_InvalidateWindow(hObj);
    }
    WM_UNLOCK();
  }
  return OldValue;
}

/*********************************************************************
*
*       GRAPH_SetLineStyle
*/
void GRAPH_SetLineStyle(GRAPH_Handle hObj, U8 Value) {
  GRAPH_SetLineStyleV(hObj, Value);
  GRAPH_SetLineStyleH(hObj, Value);
}


#else                            /* Avoid problems with empty object modules */
  void GRAPH_C(void);
  void GRAPH_C(void) {}
#endif  /* #if GUI_WINSUPPORT */
	 	 			 		    	 				 	  			   	 	 	 	 	 	  	  	      	   		 	 	 		  		  	 		 	  	  			     			       	   	 			  		    	 	     	 				  	 					 	 			   	  	  			 				 		 	 	 			     			 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品欧美福利在线观看| 中文字幕五月欧美| 中文文精品字幕一区二区| 亚洲综合视频网| 国产剧情一区二区三区| 欧美性大战久久| 欧美激情一区二区三区在线| 日韩和欧美一区二区| 91在线精品一区二区三区| 日韩女优电影在线观看| 亚洲成精国产精品女| 99九九99九九九视频精品| 久久久午夜精品理论片中文字幕| 性感美女极品91精品| 91同城在线观看| 亚洲欧洲美洲综合色网| 国产一区二区福利视频| 欧美一二三区在线观看| 亚洲成av人片一区二区梦乃| 色一情一乱一乱一91av| 亚洲欧洲美洲综合色网| 不卡一区二区三区四区| 国产无遮挡一区二区三区毛片日本| 日韩电影在线一区二区三区| 欧美日韩成人综合| 亚洲国产精品视频| 欧美亚洲动漫另类| 亚洲国产三级在线| 欧美天堂一区二区三区| 亚洲狼人国产精品| 日本精品裸体写真集在线观看| 自拍偷拍亚洲综合| 色婷婷综合久久久中文字幕| 最新日韩在线视频| av中文字幕一区| 亚洲私人黄色宅男| 色爱区综合激月婷婷| 亚洲一卡二卡三卡四卡五卡| 欧美日韩国产美| 日本亚洲欧美天堂免费| 日韩欧美一区二区三区在线| 麻豆一区二区99久久久久| 日韩欧美国产午夜精品| 九色|91porny| 欧美高清在线精品一区| aaa亚洲精品| 亚洲丰满少妇videoshd| 欧美人成免费网站| 狂野欧美性猛交blacked| 26uuu久久综合| a亚洲天堂av| 性做久久久久久免费观看欧美| 欧美一二三在线| 国产成人精品1024| 亚洲欧美成人一区二区三区| 欧美日韩精品三区| 国内一区二区在线| 亚洲精品自拍动漫在线| 91麻豆精品国产91久久久| 精品一区二区三区免费视频| 国产精品日日摸夜夜摸av| 色狠狠一区二区三区香蕉| 天堂久久久久va久久久久| 精品国产一区二区三区忘忧草| 成人综合婷婷国产精品久久蜜臀 | 国产亚洲成av人在线观看导航| 国产精品一区一区| 亚洲一区二区五区| 欧美大黄免费观看| 91麻豆成人久久精品二区三区| 午夜久久久久久久久久一区二区| 久久精品在线免费观看| 色94色欧美sute亚洲线路一久| 精品在线亚洲视频| 一区av在线播放| 国产亚洲精品中文字幕| 欧美日韩在线播放一区| 国产寡妇亲子伦一区二区| 亚洲午夜一区二区| 国产精品国产三级国产aⅴ中文| 欧美一区二区三区视频免费| 99精品欧美一区二区三区综合在线| 午夜精品一区二区三区电影天堂 | 欧美福利视频导航| 不卡的av网站| 国产精选一区二区三区| 爽好多水快深点欧美视频| 国产精品久久久久久亚洲伦| 欧美电影精品一区二区| 欧美日韩在线直播| 一本色道亚洲精品aⅴ| 国产麻豆精品在线观看| 免费视频一区二区| 亚洲mv在线观看| 亚洲免费伊人电影| 国产精品久久久久久久蜜臀| 精品蜜桃在线看| 91精品国产综合久久香蕉麻豆| 92精品国产成人观看免费| 风间由美中文字幕在线看视频国产欧美 | 国产精品美女久久久久久久久久久| 欧美福利视频一区| 欧美日韩一区二区三区高清| 91丨九色丨蝌蚪富婆spa| 国产91精品在线观看| 激情综合色丁香一区二区| 日韩精品乱码免费| 丝袜诱惑亚洲看片| 视频一区免费在线观看| 一区二区高清视频在线观看| 国产精品不卡视频| 国产精品二三区| 国产精品久久久久久久第一福利| 国产午夜精品一区二区三区视频| 久久久久国产一区二区三区四区| 久久综合一区二区| 久久影院午夜论| 久久久激情视频| 国产欧美综合在线| 国产精品国产精品国产专区不片| 国产精品色在线| 亚洲色图欧美激情| 亚洲一区在线视频| 青青青伊人色综合久久| 看片的网站亚洲| 岛国精品在线观看| 一本到三区不卡视频| 欧美丝袜自拍制服另类| 日韩一区二区免费电影| 久久综合资源网| 国产精品久久毛片av大全日韩| 亚洲欧美日韩国产手机在线| 一级精品视频在线观看宜春院| 一区二区三区中文免费| 日韩制服丝袜av| 国产一区二区三区观看| 成人黄色a**站在线观看| 日本道免费精品一区二区三区| 欧美高清性hdvideosex| 久久女同性恋中文字幕| 亚洲免费毛片网站| 水野朝阳av一区二区三区| 国产精品1024久久| 色视频欧美一区二区三区| 91麻豆精品国产91久久久更新时间 | 亚洲老司机在线| 免费高清视频精品| 成人在线一区二区三区| 欧美久久久久久久久中文字幕| 日韩三级精品电影久久久| 国产精品色呦呦| 日韩1区2区日韩1区2区| 国产91精品欧美| 欧美日韩亚洲另类| 欧美国产综合一区二区| 午夜婷婷国产麻豆精品| 福利电影一区二区三区| 91精品国产91久久久久久一区二区 | 亚洲国产一区二区视频| 国产福利一区二区三区视频| 日本高清不卡一区| 久久久国产精品不卡| 午夜欧美2019年伦理| 福利视频网站一区二区三区| 欧美高清精品3d| 亚洲欧美二区三区| 福利一区在线观看| 精品久久国产字幕高潮| 一区二区欧美视频| 99视频精品在线| 国产清纯白嫩初高生在线观看91| 亚洲福利国产精品| 一本色道久久综合精品竹菊| 久久久国产精品午夜一区ai换脸| 婷婷一区二区三区| 色哟哟在线观看一区二区三区| 久久久99精品免费观看| 免费看欧美女人艹b| 欧美日韩一区久久| 亚洲综合在线五月| 一本色道**综合亚洲精品蜜桃冫| 国产色一区二区| 国产精品一区二区久久精品爱涩| 欧美精品一二三区| 亚洲自拍另类综合| 91美女片黄在线| 国产精品乱码一区二区三区软件| 国内欧美视频一区二区| 日韩亚洲欧美高清| 日本伊人午夜精品| 日韩午夜中文字幕| 日韩国产在线观看| 欧美一区永久视频免费观看| 亚洲成av人在线观看| 欧美乱妇20p| 奇米色777欧美一区二区| 69久久夜色精品国产69蝌蚪网 | 日韩一区欧美小说| 9i看片成人免费高清| 亚洲视频网在线直播|