push 4d5485f9b89f417d46b39b93e8d940437007f325
[wine/hacks.git] / include / gdiplusflat.h
blobf63d895269a3039c46b13d87fae9ea02b438dd0b
1 /*
2 * Copyright (C) 2007 Google (Evan Stade)
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #ifndef _FLATAPI_H
20 #define _FLATAPI_H
22 #define WINGDIPAPI __stdcall
24 #define GDIPCONST const
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
30 GpStatus WINGDIPAPI GdipClonePen(GpPen*,GpPen**);
31 GpStatus WINGDIPAPI GdipCreatePen1(ARGB,REAL,GpUnit,GpPen**);
32 GpStatus WINGDIPAPI GdipDeletePen(GpPen*);
33 GpStatus WINGDIPAPI GdipGetPenBrushFill(GpPen*,GpBrush**);
34 GpStatus WINGDIPAPI GdipGetPenColor(GpPen*,ARGB*);
35 GpStatus WINGDIPAPI GdipGetPenDashArray(GpPen*,REAL*,INT);
36 GpStatus WINGDIPAPI GdipGetPenDashOffset(GpPen*,REAL*);
37 GpStatus WINGDIPAPI GdipGetPenDashStyle(GpPen*,GpDashStyle*);
38 GpStatus WINGDIPAPI GdipSetPenBrushFill(GpPen*,GpBrush*);
39 GpStatus WINGDIPAPI GdipSetPenColor(GpPen*,ARGB);
40 GpStatus WINGDIPAPI GdipSetPenCustomEndCap(GpPen*,GpCustomLineCap*);
41 GpStatus WINGDIPAPI GdipSetPenCustomStartCap(GpPen*,GpCustomLineCap*);
42 GpStatus WINGDIPAPI GdipSetPenDashArray(GpPen*,GDIPCONST REAL*,INT);
43 GpStatus WINGDIPAPI GdipSetPenDashOffset(GpPen*,REAL);
44 GpStatus WINGDIPAPI GdipSetPenDashStyle(GpPen*,GpDashStyle);
45 GpStatus WINGDIPAPI GdipSetPenEndCap(GpPen*,GpLineCap);
46 GpStatus WINGDIPAPI GdipSetPenLineCap197819(GpPen*,GpLineCap,GpLineCap,GpDashCap);
47 GpStatus WINGDIPAPI GdipSetPenLineJoin(GpPen*,GpLineJoin);
48 GpStatus WINGDIPAPI GdipSetPenMiterLimit(GpPen*,REAL);
49 GpStatus WINGDIPAPI GdipSetPenStartCap(GpPen*,GpLineCap);
50 GpStatus WINGDIPAPI GdipSetPenWidth(GpPen*,REAL);
52 GpStatus WINGDIPAPI GdipCreateFromHDC(HDC,GpGraphics**);
53 GpStatus WINGDIPAPI GdipCreateFromHWND(HWND,GpGraphics**);
54 GpStatus WINGDIPAPI GdipCreateLineBrush(GDIPCONST GpPointF*,GDIPCONST GpPointF*,
55 ARGB,ARGB,GpWrapMode,GpLineGradient**);
56 GpStatus WINGDIPAPI GdipCreateMetafileFromEmf(HENHMETAFILE,BOOL,GpMetafile**);
57 GpStatus WINGDIPAPI GdipCreateMetafileFromWmf(HMETAFILE,BOOL,
58 GDIPCONST WmfPlaceableFileHeader*,GpMetafile**);
59 GpStatus WINGDIPAPI GdipCreateStreamOnFile(GDIPCONST WCHAR*,UINT,IStream**);
60 GpStatus WINGDIPAPI GdipDeleteGraphics(GpGraphics *);
61 GpStatus WINGDIPAPI GdipDrawArc(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL,REAL,REAL);
62 GpStatus WINGDIPAPI GdipDrawBezier(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL,REAL,
63 REAL,REAL,REAL);
64 GpStatus WINGDIPAPI GdipDrawCurve2(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT,REAL);
65 GpStatus WINGDIPAPI GdipDrawImageI(GpGraphics*,GpImage*,INT,INT);
66 GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics*,GpImage*,
67 GDIPCONST GpPointF*,INT,REAL,REAL,REAL,REAL,GpUnit,
68 GDIPCONST GpImageAttributes*,DrawImageAbort,VOID*);
69 GpStatus WINGDIPAPI GdipDrawImageRectRect(GpGraphics*,GpImage*,REAL,REAL,REAL,
70 REAL,REAL,REAL,REAL,REAL,GpUnit,GDIPCONST GpImageAttributes*,DrawImageAbort,
71 VOID*);
72 GpStatus WINGDIPAPI GdipDrawLine(GpGraphics *graphics,GpPen*,REAL,REAL,REAL,REAL);
73 GpStatus WINGDIPAPI GdipDrawLineI(GpGraphics*,GpPen*,INT,INT,INT,INT);
74 GpStatus WINGDIPAPI GdipDrawLines(GpGraphics*,GpPen*,GDIPCONST GpPointF*,INT);
75 GpStatus WINGDIPAPI GdipDrawPath(GpGraphics*,GpPen*,GpPath*);
76 GpStatus WINGDIPAPI GdipDrawPie(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL,REAL,REAL);
77 GpStatus WINGDIPAPI GdipDrawRectangleI(GpGraphics*,GpPen*,INT,INT,INT,INT);
78 GpStatus WINGDIPAPI GdipDrawRectangles(GpGraphics*,GpPen*,GpRectF*,INT);
79 GpStatus WINGDIPAPI GdipDrawString(GpGraphics*,GDIPCONST WCHAR*,INT,
80 GDIPCONST GpFont*,GDIPCONST RectF*, GDIPCONST GpStringFormat*,
81 GDIPCONST GpBrush*);
82 GpStatus WINGDIPAPI GdipFillPath(GpGraphics*,GpBrush*,GpPath*);
83 GpStatus WINGDIPAPI GdipFillPie(GpGraphics*,GpBrush*,REAL,REAL,REAL,REAL,REAL,REAL);
84 GpStatus WINGDIPAPI GdipFillPolygonI(GpGraphics*,GpBrush*,GDIPCONST GpPoint*,INT,
85 GpFillMode);
86 GpStatus WINGDIPAPI GdipFillRectangle(GpGraphics*,GpBrush*,REAL,REAL,REAL,REAL);
87 GpStatus WINGDIPAPI GdipFillRectangleI(GpGraphics*,GpBrush*,INT,INT,INT,INT);
88 GpStatus WINGDIPAPI GdipGetCompositingMode(GpGraphics*,CompositingMode*);
89 GpStatus WINGDIPAPI GdipGetCompositingQuality(GpGraphics*,CompositingQuality*);
90 GpStatus WINGDIPAPI GdipGetInterpolationMode(GpGraphics*,InterpolationMode*);
91 GpStatus WINGDIPAPI GdipGetPageScale(GpGraphics*,REAL*);
92 GpStatus WINGDIPAPI GdipGetPageUnit(GpGraphics*,GpUnit*);
93 GpStatus WINGDIPAPI GdipGetPixelOffsetMode(GpGraphics*,PixelOffsetMode*);
94 GpStatus WINGDIPAPI GdipGetSmoothingMode(GpGraphics*,SmoothingMode*);
95 GpStatus WINGDIPAPI GdipGetTextRenderingHint(GpGraphics*,TextRenderingHint*);
96 GpStatus WINGDIPAPI GdipGetWorldTransform(GpGraphics*,GpMatrix*);
97 GpStatus WINGDIPAPI GdipRestoreGraphics(GpGraphics*,GraphicsState);
98 GpStatus WINGDIPAPI GdipRotateWorldTransform(GpGraphics*,REAL,GpMatrixOrder);
99 GpStatus WINGDIPAPI GdipSaveGraphics(GpGraphics*,GraphicsState*);
100 GpStatus WINGDIPAPI GdipScaleWorldTransform(GpGraphics*,REAL,REAL,GpMatrixOrder);
101 GpStatus WINGDIPAPI GdipSetCompositingMode(GpGraphics*,CompositingMode);
102 GpStatus WINGDIPAPI GdipSetCompositingQuality(GpGraphics*,CompositingQuality);
103 GpStatus WINGDIPAPI GdipSetInterpolationMode(GpGraphics*,InterpolationMode);
104 GpStatus WINGDIPAPI GdipSetPageScale(GpGraphics*,REAL);
105 GpStatus WINGDIPAPI GdipSetPageUnit(GpGraphics*,GpUnit);
106 GpStatus WINGDIPAPI GdipSetPixelOffsetMode(GpGraphics*,PixelOffsetMode);
107 GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics*,SmoothingMode);
108 GpStatus WINGDIPAPI GdipSetTextRenderingHint(GpGraphics*,TextRenderingHint);
109 GpStatus WINGDIPAPI GdipSetWorldTransform(GpGraphics*,GpMatrix*);
110 GpStatus WINGDIPAPI GdipTranslateWorldTransform(GpGraphics*,REAL,REAL,GpMatrixOrder);
112 GpStatus WINGDIPAPI GdipCloneBrush(GpBrush*,GpBrush**);
113 GpStatus WINGDIPAPI GdipCreatePathGradient(GDIPCONST GpPointF*,INT,GpWrapMode,
114 GpPathGradient**);
115 GpStatus WINGDIPAPI GdipCreatePathGradientFromPath(GDIPCONST GpPath*,
116 GpPathGradient**);
117 GpStatus WINGDIPAPI GdipCreateSolidFill(ARGB,GpSolidFill**);
118 GpStatus WINGDIPAPI GdipCreateTextureIA(GpImage*,GDIPCONST GpImageAttributes*,
119 REAL,REAL,REAL,REAL,GpTexture**);
120 GpStatus WINGDIPAPI GdipDeleteBrush(GpBrush*);
121 GpStatus WINGDIPAPI GdipGetBrushType(GpBrush*,GpBrushType*);
122 GpStatus WINGDIPAPI GdipGetLineGammaCorrection(GpLineGradient*,BOOL*);
123 GpStatus WINGDIPAPI GdipGetPathGradientCenterPoint(GpPathGradient*,GpPointF*);
124 GpStatus WINGDIPAPI GdipGetPathGradientFocusScales(GpPathGradient*,REAL*,REAL*);
125 GpStatus WINGDIPAPI GdipGetPathGradientGammaCorrection(GpPathGradient*,BOOL*);
126 GpStatus WINGDIPAPI GdipGetPathGradientPointCount(GpPathGradient*,INT*);
127 GpStatus WINGDIPAPI GdipGetPathGradientSurroundColorsWithCount(GpPathGradient*,
128 ARGB*,INT*);
129 GpStatus WINGDIPAPI GdipGetSolidFillColor(GpSolidFill*,ARGB*);
130 GpStatus WINGDIPAPI GdipSetLineBlend(GpLineGradient*,GDIPCONST REAL*,
131 GDIPCONST REAL*,INT);
132 GpStatus WINGDIPAPI GdipSetLineGammaCorrection(GpLineGradient*,BOOL);
133 GpStatus WINGDIPAPI GdipSetLineSigmaBlend(GpLineGradient*,REAL,REAL);
134 GpStatus WINGDIPAPI GdipSetLineWrapMode(GpLineGradient*,GpWrapMode);
135 GpStatus WINGDIPAPI GdipSetPathGradientCenterColor(GpPathGradient*,ARGB);
136 GpStatus WINGDIPAPI GdipSetPathGradientCenterPoint(GpPathGradient*,GpPointF*);
137 GpStatus WINGDIPAPI GdipSetPathGradientFocusScales(GpPathGradient*,REAL,REAL);
138 GpStatus WINGDIPAPI GdipSetPathGradientGammaCorrection(GpPathGradient*,BOOL);
139 GpStatus WINGDIPAPI GdipSetPathGradientSigmaBlend(GpPathGradient*,REAL,REAL);
140 GpStatus WINGDIPAPI GdipSetPathGradientSurroundColorsWithCount(GpPathGradient*,
141 ARGB*,INT*);
142 GpStatus WINGDIPAPI GdipSetPathGradientWrapMode(GpPathGradient*,GpWrapMode);
143 GpStatus WINGDIPAPI GdipSetSolidFillColor(GpSolidFill*,ARGB);
144 GpStatus WINGDIPAPI GdipSetTextureTransform(GpTexture *,GDIPCONST GpMatrix*);
146 GpStatus WINGDIPAPI GdipAddPathArc(GpPath*,REAL,REAL,REAL,REAL,REAL,REAL);
147 GpStatus WINGDIPAPI GdipAddPathBezierI(GpPath*,INT,INT,INT,INT,INT,INT,INT,INT);
148 GpStatus WINGDIPAPI GdipAddPathBeziers(GpPath*,GDIPCONST GpPointF*,INT);
149 GpStatus WINGDIPAPI GdipAddPathEllipse(GpPath*,REAL,REAL,REAL,REAL);
150 GpStatus WINGDIPAPI GdipAddPathLine2(GpPath*,GDIPCONST GpPointF*,INT);
151 GpStatus WINGDIPAPI GdipAddPathLineI(GpPath*,INT,INT,INT,INT);
152 GpStatus WINGDIPAPI GdipAddPathPath(GpPath*,GDIPCONST GpPath*,BOOL);
153 GpStatus WINGDIPAPI GdipClonePath(GpPath*,GpPath**);
154 GpStatus WINGDIPAPI GdipClosePathFigure(GpPath*);
155 GpStatus WINGDIPAPI GdipClosePathFigures(GpPath*);
156 GpStatus WINGDIPAPI GdipCreatePath(GpFillMode,GpPath**);
157 GpStatus WINGDIPAPI GdipCreatePath2(GDIPCONST GpPointF*,GDIPCONST BYTE*,INT,
158 GpFillMode,GpPath**);
159 GpStatus WINGDIPAPI GdipDeletePath(GpPath*);
160 GpStatus WINGDIPAPI GdipFillPolygon(GpGraphics*,GpBrush*,GDIPCONST GpPointF*,
161 INT,GpFillMode);
162 GpStatus WINGDIPAPI GdipGetPathFillMode(GpPath*,GpFillMode*);
163 GpStatus WINGDIPAPI GdipGetPathPoints(GpPath*,GpPointF*,INT);
164 GpStatus WINGDIPAPI GdipGetPathTypes(GpPath*,BYTE*,INT);
165 GpStatus WINGDIPAPI GdipGetPathWorldBounds(GpPath*,GpRectF*,GDIPCONST GpMatrix*,
166 GDIPCONST GpPen*);
167 GpStatus WINGDIPAPI GdipGetPointCount(GpPath*,INT*);
168 GpStatus WINGDIPAPI GdipIsOutlineVisiblePathPointI(GpPath*,INT,INT,GpPen*,
169 GpGraphics*,BOOL*);
170 GpStatus WINGDIPAPI GdipResetPath(GpPath*);
171 GpStatus WINGDIPAPI GdipSetPathFillMode(GpPath*,GpFillMode);
172 GpStatus WINGDIPAPI GdipStartPathFigure(GpPath*);
173 GpStatus WINGDIPAPI GdipTransformPath(GpPath*,GpMatrix*);
175 GpStatus WINGDIPAPI GdipCloneMatrix(GpMatrix*,GpMatrix**);
176 GpStatus WINGDIPAPI GdipCreateLineBrushFromRectI(GDIPCONST GpRect*,ARGB,ARGB,
177 LinearGradientMode,GpWrapMode,GpLineGradient**);
178 GpStatus WINGDIPAPI GdipCreateMatrix(GpMatrix**);
179 GpStatus WINGDIPAPI GdipCreateMatrix2(REAL,REAL,REAL,REAL,REAL,REAL,GpMatrix**);
180 GpStatus WINGDIPAPI GdipCreateMatrix3(GDIPCONST GpRectF *,GDIPCONST GpPointF*,
181 GpMatrix**);
182 GpStatus WINGDIPAPI GdipDeleteMatrix(GpMatrix*);
183 GpStatus WINGDIPAPI GdipGetMatrixElements(GDIPCONST GpMatrix*,REAL*);
184 GpStatus WINGDIPAPI GdipMultiplyMatrix(GpMatrix*,GpMatrix*,GpMatrixOrder);
185 GpStatus WINGDIPAPI GdipRotateMatrix(GpMatrix*,REAL,GpMatrixOrder);
186 GpStatus WINGDIPAPI GdipScaleMatrix(GpMatrix*,REAL,REAL,GpMatrixOrder);
187 GpStatus WINGDIPAPI GdipSetMatrixElements(GpMatrix*,REAL,REAL,REAL,REAL,REAL,REAL);
188 GpStatus WINGDIPAPI GdipTransformMatrixPoints(GpMatrix*,GpPointF*,INT);
189 GpStatus WINGDIPAPI GdipTranslateMatrix(GpMatrix*,REAL,REAL,GpMatrixOrder);
191 GpStatus WINGDIPAPI GdipCreatePathIter(GpPathIterator**,GpPath*);
192 GpStatus WINGDIPAPI GdipDeletePathIter(GpPathIterator*);
193 GpStatus WINGDIPAPI GdipPathIterCopyData(GpPathIterator*,INT*,GpPointF*,BYTE*,
194 INT,INT);
195 GpStatus WINGDIPAPI GdipPathIterNextSubpath(GpPathIterator*,INT*,INT*,INT*,BOOL*);
196 GpStatus WINGDIPAPI GdipPathIterRewind(GpPathIterator*);
198 GpStatus WINGDIPAPI GdipCloneCustomLineCap(GpCustomLineCap*,GpCustomLineCap**);
199 GpStatus WINGDIPAPI GdipCreateCustomLineCap(GpPath*,GpPath*,GpLineCap,REAL,
200 GpCustomLineCap**);
201 GpStatus WINGDIPAPI GdipDeleteCustomLineCap(GpCustomLineCap*);
202 GpStatus WINGDIPAPI GdipSetCustomLineCapStrokeCaps(GpCustomLineCap*,GpLineCap,
203 GpLineCap);
205 GpStatus WINGDIPAPI GdipBitmapGetPixel(GpBitmap*,INT,INT,ARGB*);
206 GpStatus WINGDIPAPI GdipBitmapLockBits(GpBitmap*,GDIPCONST GpRect*,UINT,
207 PixelFormat,BitmapData*);
208 GpStatus WINGDIPAPI GdipConvertToEmfPlus(const GpGraphics*,GpMetafile*,BOOL*,
209 EmfType,const WCHAR*,GpMetafile**);
210 GpStatus WINGDIPAPI GdipCreateBitmapFromFile(GDIPCONST WCHAR*,GpBitmap**);
211 GpStatus WINGDIPAPI GdipCreateBitmapFromGraphics(INT,INT,GpGraphics*,GpBitmap**);
212 GpStatus WINGDIPAPI GdipCreateBitmapFromScan0(INT,INT,INT,PixelFormat,BYTE*,
213 GpBitmap**);
214 GpStatus WINGDIPAPI GdipCreateBitmapFromStream(IStream*,GpBitmap**);
215 GpStatus WINGDIPAPI GdipCreateBitmapFromStreamICM(IStream*,GpBitmap**);
216 GpStatus WINGDIPAPI GdipDisposeImage(GpImage*);
217 GpStatus WINGDIPAPI GdipGetImageBounds(GpImage*,GpRectF*,GpUnit*);
218 GpStatus WINGDIPAPI GdipGetImageGraphicsContext(GpImage*,GpGraphics**);
219 GpStatus WINGDIPAPI GdipGetImageHeight(GpImage*,UINT*);
220 GpStatus WINGDIPAPI GdipGetImageHorizontalResolution(GpImage*,REAL*);
221 GpStatus WINGDIPAPI GdipGetImagePixelFormat(GpImage*,PixelFormat*);
222 GpStatus WINGDIPAPI GdipGetImageRawFormat(GpImage*,GUID*);
223 GpStatus WINGDIPAPI GdipGetImageType(GpImage*,ImageType*);
224 GpStatus WINGDIPAPI GdipGetImageVerticalResolution(GpImage*,REAL*);
225 GpStatus WINGDIPAPI GdipGetImageWidth(GpImage*,UINT*);
226 GpStatus WINGDIPAPI GdipGetMetafileHeaderFromMetafile(GpMetafile*,MetafileHeader*);
227 GpStatus WINGDIPAPI GdipGetPropertyItemSize(GpImage*,PROPID,UINT*);
228 GpStatus WINGDIPAPI GdipImageGetFrameCount(GpImage*,GDIPCONST GUID*,UINT*);
229 GpStatus WINGDIPAPI GdipImageGetFrameDimensionsList(GpImage*,GUID*,UINT);
230 GpStatus WINGDIPAPI GdipImageSelectActiveFrame(GpImage*,GDIPCONST GUID*,UINT);
231 GpStatus WINGDIPAPI GdipLoadImageFromStream(IStream*,GpImage**);
232 GpStatus WINGDIPAPI GdipLoadImageFromStreamICM(IStream*,GpImage**);
233 GpStatus WINGDIPAPI GdipRemovePropertyItem(GpImage*,PROPID);
234 GpStatus WINGDIPAPI GdipSaveImageToStream(GpImage*,IStream*,
235 GDIPCONST CLSID*,GDIPCONST EncoderParameters*);
236 GpStatus WINGDIPAPI GdipSetImagePalette(GpImage*,GDIPCONST ColorPalette*);
238 GpStatus WINGDIPAPI GdipCreateImageAttributes(GpImageAttributes**);
239 GpStatus WINGDIPAPI GdipDisposeImageAttributes(GpImageAttributes*);
240 GpStatus WINGDIPAPI GdipSetImageAttributesColorKeys(GpImageAttributes*,
241 ColorAdjustType,BOOL,ARGB,ARGB);
242 GpStatus WINGDIPAPI GdipSetImageAttributesColorMatrix(GpImageAttributes*,
243 ColorAdjustType,BOOL,GDIPCONST ColorMatrix*,GDIPCONST ColorMatrix*,
244 ColorMatrixFlags);
245 GpStatus WINGDIPAPI GdipSetImageAttributesWrapMode(GpImageAttributes*,WrapMode,
246 ARGB,BOOL);
248 GpStatus WINGDIPAPI GdipCreateFontFromLogfontA(HDC,GDIPCONST LOGFONTA*,GpFont**);
249 GpStatus WINGDIPAPI GdipCreateFontFromLogfontW(HDC,GDIPCONST LOGFONTW*,GpFont**);
250 GpStatus WINGDIPAPI GdipDeleteFont(GpFont*);
251 GpStatus WINGDIPAPI GdipGetLogFontW(GpFont*,GpGraphics*,LOGFONTW*);
253 GpStatus WINGDIPAPI GdipCreateStringFormat(INT,LANGID,GpStringFormat**);
254 GpStatus WINGDIPAPI GdipDeleteStringFormat(GpStringFormat*);
255 GpStatus WINGDIPAPI GdipGetStringFormatAlign(GpStringFormat*,StringAlignment*);
256 GpStatus WINGDIPAPI GdipGetStringFormatHotkeyPrefix(GDIPCONST GpStringFormat*,INT*);
257 GpStatus WINGDIPAPI GdipGetStringFormatLineAlign(GpStringFormat*,StringAlignment*);
258 GpStatus WINGDIPAPI GdipGetStringFormatTrimming(GpStringFormat*,StringTrimming*);
259 GpStatus WINGDIPAPI GdipSetStringFormatAlign(GpStringFormat*,StringAlignment);
260 GpStatus WINGDIPAPI GdipSetStringFormatHotkeyPrefix(GpStringFormat*,INT);
261 GpStatus WINGDIPAPI GdipSetStringFormatLineAlign(GpStringFormat*,StringAlignment);
262 GpStatus WINGDIPAPI GdipSetStringFormatTrimming(GpStringFormat*,StringTrimming);
264 #ifdef __cplusplus
266 #endif
268 #endif