mirror of
https://github.com/LHY0125/PathEditor.git
synced 2026-05-10 02:09:46 +08:00
build: 重构IUP库依赖和项目结构
- 删除旧版iup-3.31_Win64_dllw6_lib目录及其所有二进制文件 - 将IUP和CD库重新组织为独立目录结构,包含头文件和静态库 - 更新CMakeLists.txt以链接新的静态库(iupcontrols、iupimglib、cd等) - 修改main.c以显式初始化IupControls和IupImageLib扩展库 - 更新回调函数签名以匹配IUP Matrix控件的实际参数 - 调整UI工具函数以使用Matrix控件的属性(MARKED、NUMLIN等) - 更新安装脚本仅复制实际依赖的DLL文件 - 添加所有缺失的IUP和CD头文件以支持完整功能
This commit is contained in:
@@ -0,0 +1,360 @@
|
||||
/** \file
|
||||
* \brief Canvas Class
|
||||
*
|
||||
* DEPRECATED API. USE NAMESPACE BASED CLASSES.
|
||||
*
|
||||
* See Copyright Notice in cd.h
|
||||
*/
|
||||
|
||||
#ifndef __CD_CANVAS_HPP
|
||||
#define __CD_CANVAS_HPP
|
||||
|
||||
#include "cd.h"
|
||||
#include "wd.h"
|
||||
|
||||
class cdCanvasC
|
||||
{
|
||||
cdCanvas* canvas;
|
||||
|
||||
cdCanvasC() {};
|
||||
|
||||
public:
|
||||
|
||||
/* canvas init */
|
||||
cdCanvasC(cdCanvas* _canvas)
|
||||
{ this->canvas = _canvas; }
|
||||
|
||||
~cdCanvasC()
|
||||
{ cdKillCanvas(this->canvas); }
|
||||
|
||||
cdContext* GetContext()
|
||||
{ return cdCanvasGetContext(canvas); }
|
||||
int Activate()
|
||||
{ return cdCanvasActivate(canvas); }
|
||||
void Deactivate()
|
||||
{ cdCanvasDeactivate(canvas); }
|
||||
|
||||
/* control */
|
||||
int Simulate(int mode)
|
||||
{ return cdCanvasSimulate(canvas, mode); }
|
||||
void Flush()
|
||||
{ cdCanvasFlush(canvas); }
|
||||
void Clear()
|
||||
{ cdCanvasClear(canvas); }
|
||||
cdState* SaveState()
|
||||
{ return cdCanvasSaveState(canvas); }
|
||||
void RestoreState(cdState* state)
|
||||
{ cdCanvasRestoreState(canvas, state); }
|
||||
void SetAttribute(const char* name, char* data)
|
||||
{ cdCanvasSetAttribute(canvas, name, data); }
|
||||
char* GetAttribute(const char* name)
|
||||
{ return cdCanvasGetAttribute(canvas, name); }
|
||||
|
||||
/* interpretation */
|
||||
int Play(cdContext *context, int xmin, int xmax, int ymin, int ymax, void *data)
|
||||
{ return cdCanvasPlay(canvas, context, xmin, xmax, ymin, ymax, data); }
|
||||
|
||||
/* coordinate transformation */
|
||||
void GetSize(int *width, int *height, double *width_mm, double *height_mm)
|
||||
{ cdCanvasGetSize(canvas, width, height, width_mm, height_mm); }
|
||||
int UpdateYAxis(int* y)
|
||||
{ return cdCanvasUpdateYAxis(canvas, y); }
|
||||
void MM2Pixel(double mm_dx, double mm_dy, int *dx, int *dy)
|
||||
{ cdCanvasMM2Pixel(canvas, mm_dx, mm_dy, dx, dy); }
|
||||
void Pixel2MM(int dx, int dy, double *mm_dx, double *mm_dy)
|
||||
{ cdCanvasPixel2MM(canvas, dx, dy, mm_dx, mm_dy); }
|
||||
void MM2Pixel(double mm_dx, double mm_dy, double *dx, double *dy)
|
||||
{ cdfCanvasMM2Pixel(canvas, mm_dx, mm_dy, dx, dy); }
|
||||
void Pixel2MM(double dx, double dy, double *mm_dx, double *mm_dy)
|
||||
{ cdfCanvasPixel2MM(canvas, dx, dy, mm_dx, mm_dy); }
|
||||
void Origin(int x, int y)
|
||||
{ cdCanvasOrigin(canvas, x, y); }
|
||||
void Origin(double x, double y)
|
||||
{ cdfCanvasOrigin(canvas, x, y); }
|
||||
void GetOrigin(int *x, int *y)
|
||||
{ cdCanvasGetOrigin(canvas, x, y); }
|
||||
void GetOrigin(double *x, double *y)
|
||||
{ cdfCanvasGetOrigin(canvas, x, y); }
|
||||
|
||||
/* clipping */
|
||||
int Clip(int mode)
|
||||
{ return cdCanvasClip(canvas, mode); }
|
||||
void ClipArea(int xmin, int xmax, int ymin, int ymax)
|
||||
{ cdCanvasClipArea(canvas, xmin, xmax, ymin, ymax); }
|
||||
int GetClipArea(int *xmin, int *xmax, int *ymin, int *ymax)
|
||||
{ return cdCanvasGetClipArea(canvas, xmin, xmax, ymin, ymax); }
|
||||
void ClipArea(double xmin, double xmax, double ymin, double ymax)
|
||||
{ cdfCanvasClipArea(canvas, xmin, xmax, ymin, ymax); }
|
||||
int GetClipArea(double *xmin, double *xmax, double *ymin, double *ymax)
|
||||
{ return cdfCanvasGetClipArea(canvas, xmin, xmax, ymin, ymax); }
|
||||
|
||||
/* clipping region */
|
||||
int IsPointInRegion(int x, int y)
|
||||
{ return cdCanvasIsPointInRegion(canvas, x, y); }
|
||||
void OffsetRegion(int x, int y)
|
||||
{ cdCanvasOffsetRegion(canvas, x, y); }
|
||||
void GetRegionBox(int *xmin, int *xmax, int *ymin, int *ymax)
|
||||
{ cdCanvasGetRegionBox(canvas, xmin, xmax, ymin, ymax); }
|
||||
int RegionCombineMode(int mode)
|
||||
{ return cdCanvasRegionCombineMode(canvas, mode); }
|
||||
|
||||
/* primitives */
|
||||
void Pixel(int x, int y, long color)
|
||||
{ cdCanvasPixel(canvas, x, y, color); }
|
||||
void Mark(int x, int y)
|
||||
{ cdCanvasMark(canvas, x, y); }
|
||||
|
||||
void Line(int x1, int y1, int x2, int y2)
|
||||
{ cdCanvasLine(canvas, x1, y1, x2, y2); }
|
||||
void Begin(int mode)
|
||||
{ cdCanvasBegin(canvas, mode); }
|
||||
void Vertex(int x, int y)
|
||||
{ cdCanvasVertex(canvas, x, y); }
|
||||
void End()
|
||||
{ cdCanvasEnd(canvas); }
|
||||
void Rect(int xmin, int xmax, int ymin, int ymax)
|
||||
{ cdCanvasRect(canvas, xmin, xmax, ymin, ymax); }
|
||||
void Box(int xmin, int xmax, int ymin, int ymax)
|
||||
{ cdCanvasBox(canvas, xmin, xmax, ymin, ymax); }
|
||||
void Arc(int xc, int yc, int w, int h, double angle1, double angle2)
|
||||
{ cdCanvasArc(canvas, xc, yc, w, h, angle1, angle2); }
|
||||
void Sector(int xc, int yc, int w, int h, double angle1, double angle2)
|
||||
{ cdCanvasSector(canvas, xc, yc, w, h, angle1, angle2); }
|
||||
void Chord(int xc, int yc, int w, int h, double angle1, double angle2)
|
||||
{ cdCanvasChord(canvas, xc, yc, w, h, angle1, angle2); }
|
||||
void Text(int x, int y, const char* s)
|
||||
{ cdCanvasText(canvas, x, y, s); }
|
||||
|
||||
void Line(double x1, double y1, double x2, double y2)
|
||||
{ cdfCanvasLine(canvas, x1, y1, x2, y2); }
|
||||
void Vertex(double x, double y)
|
||||
{ cdfCanvasVertex(canvas, x, y); }
|
||||
void Rect(double xmin, double xmax, double ymin, double ymax)
|
||||
{ cdfCanvasRect(canvas, xmin, xmax, ymin, ymax); }
|
||||
void Box(double xmin, double xmax, double ymin, double ymax)
|
||||
{ cdfCanvasBox(canvas, xmin, xmax, ymin, ymax); }
|
||||
void Arc(double xc, double yc, double w, double h, double angle1, double angle2)
|
||||
{ cdfCanvasArc(canvas, xc, yc, w, h, angle1, angle2); }
|
||||
void Sector(double xc, double yc, double w, double h, double angle1, double angle2)
|
||||
{ cdfCanvasSector(canvas, xc, yc, w, h, angle1, angle2); }
|
||||
void Chord(double xc, double yc, double w, double h, double angle1, double angle2)
|
||||
{ cdfCanvasChord(canvas, xc, yc, w, h, angle1, angle2); }
|
||||
void Text(double x, double y, const char* s)
|
||||
{ cdfCanvasText(canvas, x, y, s); }
|
||||
|
||||
/* attributes */
|
||||
long Background(long color)
|
||||
{ return cdCanvasBackground(canvas, color); }
|
||||
long Foreground(long color)
|
||||
{ return cdCanvasForeground(canvas, color); }
|
||||
int BackOpacity(int opacity)
|
||||
{ return cdCanvasBackOpacity(canvas, opacity); }
|
||||
int WriteMode(int mode)
|
||||
{ return cdCanvasWriteMode(canvas, mode); }
|
||||
int LineStyle(int style)
|
||||
{ return cdCanvasLineStyle(canvas, style); }
|
||||
void LineStyleDashes(const int* dashes, int count)
|
||||
{ cdCanvasLineStyleDashes(canvas, dashes, count); }
|
||||
int LineWidth(int width)
|
||||
{ return cdCanvasLineWidth(canvas, width); }
|
||||
int LineJoin(int join)
|
||||
{ return cdCanvasLineJoin(canvas, join); }
|
||||
int LineCap(int cap)
|
||||
{ return cdCanvasLineCap(canvas, cap); }
|
||||
int InteriorStyle(int style)
|
||||
{ return cdCanvasInteriorStyle(canvas, style); }
|
||||
int Hatch(int style)
|
||||
{ return cdCanvasHatch(canvas, style); }
|
||||
void Stipple(int w, int h, const unsigned char* stipple)
|
||||
{ cdCanvasStipple(canvas, w, h, stipple); }
|
||||
unsigned char* GetStipple(int *n, int *m)
|
||||
{ return cdCanvasGetStipple(canvas, n, m); }
|
||||
void Pattern(int w, int h, long const int *pattern)
|
||||
{ cdCanvasPattern(canvas, w, h, pattern); }
|
||||
long* GetPattern(int* n, int* m)
|
||||
{ return cdCanvasGetPattern(canvas, n, m); }
|
||||
int FillMode(int mode)
|
||||
{ return cdCanvasFillMode(canvas, mode); }
|
||||
int Font(const char* type_face, int style, int size)
|
||||
{ return cdCanvasFont(canvas, type_face, style, size); }
|
||||
void GetFont(char *type_face, int *style, int *size)
|
||||
{ cdCanvasGetFont(canvas, type_face, style, size); }
|
||||
char* NativeFont(const char* font)
|
||||
{ return cdCanvasNativeFont(canvas, font); }
|
||||
int TextAlignment(int alignment)
|
||||
{ return cdCanvasTextAlignment(canvas, alignment); }
|
||||
double TextOrientation(double angle)
|
||||
{ return cdCanvasTextOrientation(canvas, angle); }
|
||||
int MarkType(int type)
|
||||
{ return cdCanvasMarkType(canvas, type); }
|
||||
int MarkSize(int size)
|
||||
{ return cdCanvasMarkSize(canvas, size); }
|
||||
|
||||
/* vector text */
|
||||
void VectorText(int x, int y, const char* s)
|
||||
{ cdCanvasVectorText(canvas, x, y, s); }
|
||||
void MultiLineVectorText(int x, int y, const char* s)
|
||||
{ cdCanvasMultiLineVectorText(canvas, x, y, s); }
|
||||
|
||||
/* vector text attributes */
|
||||
char *VectorFont(const char *filename)
|
||||
{ return cdCanvasVectorFont(canvas, filename); }
|
||||
void VectorTextDirection(int x1, int y1, int x2, int y2)
|
||||
{ cdCanvasVectorTextDirection(canvas, x1, y1, x2, y2); }
|
||||
double* VectorTextTransform(const double* matrix)
|
||||
{ return cdCanvasVectorTextTransform(canvas, matrix); }
|
||||
void VectorTextSize(int size_x, int size_y, const char* s)
|
||||
{ cdCanvasVectorTextSize(canvas, size_x, size_y, s); }
|
||||
int VectorCharSize(int size)
|
||||
{ return cdCanvasVectorCharSize(canvas, size); }
|
||||
|
||||
|
||||
/* vector text properties */
|
||||
void GetVectorTextSize(const char* s, int *x, int *y)
|
||||
{ cdCanvasGetVectorTextSize(canvas, s, x, y); }
|
||||
void GetVectorTextBounds(const char* s, int x, int y, int *rect)
|
||||
{ cdCanvasGetVectorTextBounds(canvas, s, x, y, rect); }
|
||||
|
||||
/* properties */
|
||||
void GetFontDim(int *max_width, int *height, int *ascent, int *descent)
|
||||
{ cdCanvasGetFontDim(canvas, max_width, height, ascent, descent); }
|
||||
void GetTextSize(const char* s, int *width, int *height)
|
||||
{ cdCanvasGetTextSize(canvas, s, width, height); }
|
||||
void GetTextBox(int x, int y, const char* s, int *xmin, int *xmax, int *ymin, int *ymax)
|
||||
{ cdCanvasGetTextBox(canvas, x, y, s, xmin, xmax, ymin, ymax); }
|
||||
void GetTextBounds(int x, int y, const char* s, int *rect)
|
||||
{ cdCanvasGetTextBounds(canvas, x, y, s, rect); }
|
||||
int GetColorPlanes()
|
||||
{ return cdCanvasGetColorPlanes(canvas); }
|
||||
|
||||
/* color */
|
||||
void Palette(int n, const long *palette, int mode)
|
||||
{ cdCanvasPalette(canvas, n, palette, mode); }
|
||||
|
||||
/* client images */
|
||||
void GetImageRGB(unsigned char* r, unsigned char* g, unsigned char* b, int x, int y, int w, int h)
|
||||
{ cdCanvasGetImageRGB(canvas, r, g, b, x, y, w, h); }
|
||||
void PutImageRectRGB(int iw, int ih, const unsigned char* r, const unsigned char* g, const unsigned char* b, int x, int y, int w, int h, int xmin, int xmax, int ymin, int ymax)
|
||||
{ cdCanvasPutImageRectRGB(canvas, iw, ih, r, g, b, x, y, w, h, xmin, xmax, ymin, ymax); }
|
||||
void PutImageRectRGBA(int iw, int ih, const unsigned char* r, const unsigned char* g, const unsigned char* b, const unsigned char* a, int x, int y, int w, int h, int xmin, int xmax, int ymin, int ymax)
|
||||
{ cdCanvasPutImageRectRGBA(canvas, iw, ih, r, g, b, a, x, y, w, h, xmin, xmax, ymin, ymax); }
|
||||
void PutImageRectMap(int iw, int ih, const unsigned char* index, const long* colors, int x, int y, int w, int h, int xmin, int xmax, int ymin, int ymax)
|
||||
{ cdCanvasPutImageRectMap(canvas, iw, ih, index, colors, x, y, w, h, xmin, xmax, ymin, ymax); }
|
||||
|
||||
/* server images */
|
||||
cdImage* CreateImage(int w, int h)
|
||||
{ return cdCanvasCreateImage(canvas, w, h); }
|
||||
void GetImage(cdImage* image, int x, int y)
|
||||
{ cdCanvasGetImage(canvas, image, x, y); }
|
||||
void PutImageRect(cdImage* image, int x, int y, int xmin, int xmax, int ymin, int ymax)
|
||||
{ cdCanvasPutImageRect(canvas, image, x, y, xmin, xmax, ymin, ymax); }
|
||||
void ScrollArea(int xmin, int xmax, int ymin, int ymax, int dx, int dy)
|
||||
{ cdCanvasScrollArea(canvas, xmin, xmax, ymin, ymax, dx, dy); }
|
||||
|
||||
void PutBitmap(cdBitmap* bitmap, int x, int y, int w, int h)
|
||||
{ cdCanvasPutBitmap(canvas, bitmap, x, y, w, h); }
|
||||
void GetBitmap(cdBitmap* bitmap, int x, int y)
|
||||
{ cdCanvasGetBitmap(canvas, bitmap, x, y); }
|
||||
|
||||
/* coordinate transformation */
|
||||
void wWindow(double xmin, double xmax, double ymin, double ymax)
|
||||
{ wdCanvasWindow(canvas, xmin, xmax, ymin, ymax); }
|
||||
void wGetWindow(double *xmin, double *xmax, double *ymin, double *ymax)
|
||||
{ wdCanvasGetWindow(canvas, xmin, xmax, ymin, ymax); }
|
||||
void wViewport(int xmin, int xmax, int ymin, int ymax)
|
||||
{ wdCanvasViewport(canvas, xmin, xmax, ymin, ymax); }
|
||||
void wGetViewport(int *xmin, int *xmax, int *ymin, int *ymax)
|
||||
{ wdCanvasGetViewport(canvas, xmin, xmax, ymin, ymax); }
|
||||
void wWorld2Canvas(double xw, double yw, int *xv, int *yv)
|
||||
{ wdCanvasWorld2Canvas(canvas, xw, yw, xv, yv); }
|
||||
void wWorld2CanvasSize(double hw, double vw, int *hv, int *vv)
|
||||
{ wdCanvasWorld2CanvasSize(canvas, hw, vw, hv, vv); }
|
||||
void wCanvas2World(int xv, int yv, double *xw, double *yw)
|
||||
{ wdCanvasCanvas2World(canvas, xv, yv, xw, yw); }
|
||||
|
||||
void wClipArea(double xmin, double xmax, double ymin, double ymax)
|
||||
{ wdCanvasClipArea(canvas, xmin, xmax, ymin, ymax); }
|
||||
int wGetClipArea(double *xmin, double *xmax, double *ymin, double *ymax)
|
||||
{ return wdCanvasGetClipArea(canvas, xmin, xmax, ymin, ymax); }
|
||||
int wIsPointInRegion(double x, double y)
|
||||
{ return wdCanvasIsPointInRegion(canvas, x, y); }
|
||||
void wOffsetRegion(double x, double y)
|
||||
{ wdCanvasOffsetRegion(canvas, x, y); }
|
||||
void wGetRegionBox(double *xmin, double *xmax, double *ymin, double *ymax)
|
||||
{ wdCanvasGetRegionBox(canvas, xmin, xmax, ymin, ymax); }
|
||||
|
||||
/* primitives */
|
||||
void wPixel(double x, double y, long color)
|
||||
{ wdCanvasPixel(canvas, x, y, color); }
|
||||
void wMark(double x, double y)
|
||||
{ wdCanvasMark(canvas, x, y); }
|
||||
void wLine(double x1, double y1, double x2, double y2)
|
||||
{ wdCanvasLine(canvas, x1, y1, x2, y2); }
|
||||
void wVertex(double x, double y)
|
||||
{ wdCanvasVertex(canvas, x, y); }
|
||||
void wRect(double xmin, double xmax, double ymin, double ymax)
|
||||
{ wdCanvasRect(canvas, xmin, xmax, ymin, ymax); }
|
||||
void wBox(double xmin, double xmax, double ymin, double ymax)
|
||||
{ wdCanvasBox(canvas, xmin, xmax, ymin, ymax); }
|
||||
void wArc(double xc, double yc, double w, double h, double angle1, double angle2)
|
||||
{ wdCanvasArc(canvas, xc, yc, w, h, angle1, angle2); }
|
||||
void wSector(double xc, double yc, double w, double h, double angle1, double angle2)
|
||||
{ wdCanvasSector(canvas, xc, yc, w, h, angle1, angle2); }
|
||||
void wChord(double xc, double yc, double w, double h, double angle1, double angle2)
|
||||
{ wdCanvasChord(canvas, xc, yc, w, h, angle1, angle2); }
|
||||
void wText(double x, double y, const char* s)
|
||||
{ wdCanvasText(canvas, x, y, s); }
|
||||
|
||||
void wPutImageRect(cdImage* image, double x, double y, int xmin, int xmax, int ymin, int ymax)
|
||||
{ wdCanvasPutImageRect(canvas, image, x, y, xmin, xmax, ymin, ymax); }
|
||||
void wPutImageRectRGB(int iw, int ih, const unsigned char* r, const unsigned char* g, const unsigned char* b, double x, double y, double w, double h, int xmin, int xmax, int ymin, int ymax)
|
||||
{ wdCanvasPutImageRectRGB(canvas, iw, ih, r, g, b, x, y, w, h, xmin, xmax, ymin, ymax); }
|
||||
void wPutImageRectRGBA(int iw, int ih, const unsigned char* r, const unsigned char* g, const unsigned char* b, const unsigned char* a, double x, double y, double w, double h, int xmin, int xmax, int ymin, int ymax)
|
||||
{ wdCanvasPutImageRectRGBA(canvas, iw, ih, r, g, b, a, x, y, w, h, xmin, xmax, ymin, ymax); }
|
||||
void wPutImageRectMap(int iw, int ih, const unsigned char* index, const long* colors, double x, double y, double w, double h, int xmin, int xmax, int ymin, int ymax)
|
||||
{ wdCanvasPutImageRectMap(canvas, iw, ih, index, colors, x, y, w, h, xmin, xmax, ymin, ymax); }
|
||||
void wPutBitmap(cdBitmap* bitmap, double x, double y, double w, double h)
|
||||
{ wdCanvasPutBitmap(canvas, bitmap, x, y, w, h); }
|
||||
|
||||
/* attributes */
|
||||
double wLineWidth(double width)
|
||||
{ return wdCanvasLineWidth(canvas, width); }
|
||||
int wFont(const char* type_face, int style, double size)
|
||||
{ return wdCanvasFont(canvas, type_face, style, size); }
|
||||
void wGetFont(char *type_face, int *style, double *size)
|
||||
{ wdCanvasGetFont(canvas, type_face, style, size); }
|
||||
double wMarkSize(double size)
|
||||
{ return wdCanvasMarkSize(canvas, size); }
|
||||
void wGetFontDim(double *max_width, double *height, double *ascent, double *descent)
|
||||
{ wdCanvasGetFontDim(canvas, max_width, height, ascent, descent); }
|
||||
void wGetTextSize(const char* s, double *width, double *height)
|
||||
{ wdCanvasGetTextSize(canvas, s, width, height); }
|
||||
void wGetTextBox(double x, double y, const char* s, double *xmin, double *xmax, double *ymin, double *ymax)
|
||||
{ wdCanvasGetTextBox(canvas, x, y, s, xmin, xmax, ymin, ymax); }
|
||||
void wGetTextBounds(double x, double y, const char* s, double *rect)
|
||||
{ wdCanvasGetTextBounds(canvas, x, y, s, rect); }
|
||||
void wStipple(int w, int h, const unsigned char*fgbg, double w_mm, double h_mm)
|
||||
{ wdCanvasStipple(canvas, w, h, fgbg, w_mm, h_mm); }
|
||||
void wPattern(int w, int h, const long *color, double w_mm, double h_mm)
|
||||
{ wdCanvasPattern(canvas, w, h, color, w_mm, h_mm); }
|
||||
|
||||
/* vector text */
|
||||
void wVectorTextDirection(double x1, double y1, double x2, double y2)
|
||||
{ wdCanvasVectorTextDirection(canvas, x1, y1, x2, y2); }
|
||||
void wVectorTextSize(double size_x, double size_y, const char* s)
|
||||
{ wdCanvasVectorTextSize(canvas, size_x, size_y, s); }
|
||||
void wGetVectorTextSize(const char* s, double *x, double *y)
|
||||
{ wdCanvasGetVectorTextSize(canvas, s, x, y); }
|
||||
double wVectorCharSize(double size)
|
||||
{ return wdCanvasVectorCharSize(canvas, size); }
|
||||
void wVectorText(double x, double y, const char* s)
|
||||
{ wdCanvasVectorText(canvas, x, y, s); }
|
||||
void wMultiLineVectorText(double x, double y, const char* s)
|
||||
{ wdCanvasMultiLineVectorText(canvas, x, y, s); }
|
||||
void wGetVectorTextBounds(const char* s, double x, double y, double *rect)
|
||||
{ wdCanvasGetVectorTextBounds(canvas, s, x, y, rect); }
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user