Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers...
[reactos.git] / reactos / dll / win32 / gdiplus / gdiplus_private.h
diff --git a/reactos/dll/win32/gdiplus/gdiplus_private.h b/reactos/dll/win32/gdiplus/gdiplus_private.h
deleted file mode 100644 (file)
index 633ef14..0000000
+++ /dev/null
@@ -1,564 +0,0 @@
-/*
- * Copyright (C) 2007 Google (Evan Stade)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_GP_PRIVATE_H_
-#define __WINE_GP_PRIVATE_H_
-
-#include <math.h>
-#include <stdarg.h>
-
-#define WIN32_NO_STATUS
-#define _INC_WINDOWS
-#define COM_NO_WINDOWS_H
-
-#define NONAMELESSUNION
-#define COBJMACROS
-
-#include <windef.h>
-#include <winbase.h>
-#include <wingdi.h>
-#include <objbase.h>
-#include <wincodecsdk.h>
-#include <gdiplus.h>
-
-#include <wine/unicode.h>
-#include <wine/list.h>
-
-#include <wine/debug.h>
-WINE_DEFAULT_DEBUG_CHANNEL(gdiplus);
-
-#define GP_DEFAULT_PENSTYLE (PS_GEOMETRIC | PS_SOLID | PS_ENDCAP_FLAT | PS_JOIN_MITER)
-#define MAX_ARC_PTS (13)
-#define MAX_DASHLEN (16) /* this is a limitation of gdi */
-#define INCH_HIMETRIC (2540)
-
-#define VERSION_MAGIC  0xdbc01001
-#define VERSION_MAGIC2 0xdbc01002
-#define VALID_MAGIC(x) (((x) & 0xfffff000) == 0xdbc01000)
-#define TENSION_CONST (0.3)
-
-#define GIF_DISPOSE_UNSPECIFIED 0
-#define GIF_DISPOSE_DO_NOT_DISPOSE 1
-#define GIF_DISPOSE_RESTORE_TO_BKGND 2
-#define GIF_DISPOSE_RESTORE_TO_PREV 3
-
-static inline void* __WINE_ALLOC_SIZE(1) heap_alloc(size_t size)
-{
-    return HeapAlloc(GetProcessHeap(), 0, size);
-}
-
-static inline void* __WINE_ALLOC_SIZE(1) heap_alloc_zero(size_t size)
-{
-    return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size);
-}
-
-static inline void* __WINE_ALLOC_SIZE(2) heap_realloc(void *mem, size_t size)
-{
-    return HeapReAlloc(GetProcessHeap(), 0, mem, size);
-}
-
-static inline BOOL heap_free(void *mem)
-{
-    return HeapFree(GetProcessHeap(), 0, mem);
-}
-
-COLORREF ARGB2COLORREF(ARGB color) DECLSPEC_HIDDEN;
-HBITMAP ARGB2BMP(ARGB color) DECLSPEC_HIDDEN;
-extern INT arc2polybezier(GpPointF * points, REAL x1, REAL y1, REAL x2, REAL y2,
-    REAL startAngle, REAL sweepAngle) DECLSPEC_HIDDEN;
-extern REAL gdiplus_atan2(REAL dy, REAL dx) DECLSPEC_HIDDEN;
-extern GpStatus hresult_to_status(HRESULT res) DECLSPEC_HIDDEN;
-extern REAL units_to_pixels(REAL units, GpUnit unit, REAL dpi) DECLSPEC_HIDDEN;
-extern REAL pixels_to_units(REAL pixels, GpUnit unit, REAL dpi) DECLSPEC_HIDDEN;
-extern REAL units_scale(GpUnit from, GpUnit to, REAL dpi) DECLSPEC_HIDDEN;
-
-#define WineCoordinateSpaceGdiDevice ((GpCoordinateSpace)4)
-
-extern GpStatus gdi_transform_acquire(GpGraphics *graphics);
-extern GpStatus gdi_transform_release(GpGraphics *graphics);
-extern GpStatus get_graphics_transform(GpGraphics *graphics, GpCoordinateSpace dst_space,
-        GpCoordinateSpace src_space, GpMatrix *matrix) DECLSPEC_HIDDEN;
-extern GpStatus gdip_transform_points(GpGraphics *graphics, GpCoordinateSpace dst_space,
-        GpCoordinateSpace src_space, GpPointF *points, INT count) DECLSPEC_HIDDEN;
-
-extern GpStatus graphics_from_image(GpImage *image, GpGraphics **graphics) DECLSPEC_HIDDEN;
-extern GpStatus encode_image_png(GpImage *image, IStream* stream, GDIPCONST EncoderParameters* params) DECLSPEC_HIDDEN;
-
-extern GpStatus METAFILE_GetGraphicsContext(GpMetafile* metafile, GpGraphics **result) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_GetDC(GpMetafile* metafile, HDC *hdc) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_ReleaseDC(GpMetafile* metafile, HDC hdc) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_GraphicsClear(GpMetafile* metafile, ARGB color) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_FillRectangles(GpMetafile* metafile, GpBrush* brush,
-    GDIPCONST GpRectF* rects, INT count) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_SetClipRect(GpMetafile* metafile,
-    REAL x, REAL y, REAL width, REAL height, CombineMode mode) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_SetClipRegion(GpMetafile* metafile, GpRegion* region, CombineMode mode) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_SetPageTransform(GpMetafile* metafile, GpUnit unit, REAL scale) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_SetWorldTransform(GpMetafile* metafile, GDIPCONST GpMatrix* transform) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_ScaleWorldTransform(GpMetafile* metafile, REAL sx, REAL sy, MatrixOrder order) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_MultiplyWorldTransform(GpMetafile* metafile, GDIPCONST GpMatrix* matrix, MatrixOrder order) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_RotateWorldTransform(GpMetafile* metafile, REAL angle, MatrixOrder order) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_TranslateWorldTransform(GpMetafile* metafile, REAL dx, REAL dy, MatrixOrder order) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_ResetWorldTransform(GpMetafile* metafile) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_BeginContainer(GpMetafile* metafile, GDIPCONST GpRectF *dstrect,
-    GDIPCONST GpRectF *srcrect, GpUnit unit, DWORD StackIndex) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_BeginContainerNoParams(GpMetafile* metafile, DWORD StackIndex) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_EndContainer(GpMetafile* metafile, DWORD StackIndex) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_SaveGraphics(GpMetafile* metafile, DWORD StackIndex) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_RestoreGraphics(GpMetafile* metafile, DWORD StackIndex) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_GraphicsDeleted(GpMetafile* metafile) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_DrawImagePointsRect(GpMetafile* metafile, GpImage *image,
-     GDIPCONST GpPointF *points, INT count, REAL srcx, REAL srcy, REAL srcwidth,
-     REAL srcheight, GpUnit srcUnit, GDIPCONST GpImageAttributes* imageAttributes,
-     DrawImageAbort callback, VOID *callbackData) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_AddSimpleProperty(GpMetafile *metafile, SHORT prop, SHORT val) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_DrawPath(GpMetafile *metafile, GpPen *pen, GpPath *path) DECLSPEC_HIDDEN;
-extern GpStatus METAFILE_FillPath(GpMetafile *metafile, GpBrush *brush, GpPath *path) DECLSPEC_HIDDEN;
-
-extern void calc_curve_bezier(const GpPointF *pts, REAL tension, REAL *x1,
-    REAL *y1, REAL *x2, REAL *y2) DECLSPEC_HIDDEN;
-extern void calc_curve_bezier_endp(REAL xend, REAL yend, REAL xadj, REAL yadj,
-    REAL tension, REAL *x, REAL *y) DECLSPEC_HIDDEN;
-
-extern void free_installed_fonts(void) DECLSPEC_HIDDEN;
-
-extern BOOL lengthen_path(GpPath *path, INT len) DECLSPEC_HIDDEN;
-
-extern DWORD write_region_data(const GpRegion *region, void *data) DECLSPEC_HIDDEN;
-extern DWORD write_path_data(GpPath *path, void *data) DECLSPEC_HIDDEN;
-
-extern GpStatus trace_path(GpGraphics *graphics, GpPath *path) DECLSPEC_HIDDEN;
-
-typedef struct region_element region_element;
-extern void delete_element(region_element *element) DECLSPEC_HIDDEN;
-
-extern GpStatus get_hatch_data(HatchStyle hatchstyle, const char **result) DECLSPEC_HIDDEN;
-
-static inline INT gdip_round(REAL x)
-{
-    return (INT) floorf(x + 0.5);
-}
-
-static inline INT ceilr(REAL x)
-{
-    return (INT) ceilf(x);
-}
-
-static inline REAL deg2rad(REAL degrees)
-{
-    return M_PI * degrees / 180.0;
-}
-
-static inline ARGB color_over(ARGB bg, ARGB fg)
-{
-    BYTE b, g, r, a;
-    BYTE bg_alpha, fg_alpha;
-
-    fg_alpha = (fg>>24)&0xff;
-
-    if (fg_alpha == 0xff) return fg;
-
-    if (fg_alpha == 0) return bg;
-
-    bg_alpha = (((bg>>24)&0xff) * (0xff-fg_alpha)) / 0xff;
-
-    if (bg_alpha == 0) return fg;
-
-    a = bg_alpha + fg_alpha;
-    b = ((bg&0xff)*bg_alpha + (fg&0xff)*fg_alpha)/a;
-    g = (((bg>>8)&0xff)*bg_alpha + ((fg>>8)&0xff)*fg_alpha)/a;
-    r = (((bg>>16)&0xff)*bg_alpha + ((fg>>16)&0xff)*fg_alpha)/a;
-
-    return (a<<24)|(r<<16)|(g<<8)|b;
-}
-
-/* fg is premult, bg and return value are not */
-static inline ARGB color_over_fgpremult(ARGB bg, ARGB fg)
-{
-    BYTE b, g, r, a;
-    BYTE bg_alpha, fg_alpha;
-
-    fg_alpha = (fg>>24)&0xff;
-
-    if (fg_alpha == 0) return bg;
-
-    bg_alpha = (((bg>>24)&0xff) * (0xff-fg_alpha)) / 0xff;
-
-    a = bg_alpha + fg_alpha;
-    b = ((bg&0xff)*bg_alpha + (fg&0xff)*0xff)/a;
-    g = (((bg>>8)&0xff)*bg_alpha + ((fg>>8)&0xff)*0xff)/a;
-    r = (((bg>>16)&0xff)*bg_alpha + ((fg>>16)&0xff)*0xff)/a;
-
-    return (a<<24)|(r<<16)|(g<<8)|b;
-}
-
-extern const char *debugstr_rectf(const RectF* rc) DECLSPEC_HIDDEN;
-
-extern const char *debugstr_pointf(const PointF* pt) DECLSPEC_HIDDEN;
-
-extern void convert_32bppARGB_to_32bppPARGB(UINT width, UINT height,
-    BYTE *dst_bits, INT dst_stride, const BYTE *src_bits, INT src_stride) DECLSPEC_HIDDEN;
-
-extern GpStatus convert_pixels(INT width, INT height,
-    INT dst_stride, BYTE *dst_bits, PixelFormat dst_format,
-    INT src_stride, const BYTE *src_bits, PixelFormat src_format, ColorPalette *palette) DECLSPEC_HIDDEN;
-
-extern PixelFormat apply_image_attributes(const GpImageAttributes *attributes, LPBYTE data,
-    UINT width, UINT height, INT stride, ColorAdjustType type, PixelFormat fmt) DECLSPEC_HIDDEN;
-
-struct GpMatrix{
-    REAL matrix[6];
-};
-
-struct GpPen{
-    UINT style;
-    GpUnit unit;
-    REAL width;
-    GpLineCap endcap;
-    GpLineCap startcap;
-    GpDashCap dashcap;
-    GpCustomLineCap *customstart;
-    GpCustomLineCap *customend;
-    GpLineJoin join;
-    REAL miterlimit;
-    GpDashStyle dash;
-    REAL *dashes;
-    INT numdashes;
-    REAL offset;    /* dash offset */
-    GpBrush *brush;
-    GpPenAlignment align;
-    GpMatrix transform;
-};
-
-struct GpGraphics{
-    HDC hdc;
-    HWND hwnd;
-    BOOL owndc;
-    BOOL alpha_hdc;
-    GpImage *image;
-    ImageType image_type;
-    SmoothingMode smoothing;
-    CompositingQuality compqual;
-    InterpolationMode interpolation;
-    PixelOffsetMode pixeloffset;
-    CompositingMode compmode;
-    TextRenderingHint texthint;
-    GpUnit unit;    /* page unit */
-    REAL scale;     /* page scale */
-    REAL xres, yres;
-    GpMatrix worldtrans; /* world transform */
-    BOOL busy;      /* hdc handle obtained by GdipGetDC */
-    GpRegion *clip; /* in device coords */
-    UINT textcontrast; /* not used yet. get/set only */
-    struct list containers;
-    GraphicsContainer contid; /* last-issued container ID */
-    INT origin_x, origin_y;
-    INT gdi_transform_acquire_count, gdi_transform_save;
-    GpMatrix gdi_transform;
-    /* For giving the caller an HDC when we technically can't: */
-    HBITMAP temp_hbitmap;
-    int temp_hbitmap_width;
-    int temp_hbitmap_height;
-    BYTE *temp_bits;
-    HDC temp_hdc;
-};
-
-struct GpBrush{
-    GpBrushType bt;
-};
-
-struct GpHatch{
-    GpBrush brush;
-    HatchStyle hatchstyle;
-    ARGB forecol;
-    ARGB backcol;
-};
-
-struct GpSolidFill{
-    GpBrush brush;
-    ARGB color;
-};
-
-struct GpPathGradient{
-    GpBrush brush;
-    GpPath* path;
-    ARGB centercolor;
-    GpWrapMode wrap;
-    BOOL gamma;
-    GpPointF center;
-    GpPointF focus;
-    REAL* blendfac;  /* blend factors */
-    REAL* blendpos;  /* blend positions */
-    INT blendcount;
-    ARGB *surroundcolors;
-    INT surroundcolorcount;
-    ARGB* pblendcolor; /* preset blend colors */
-    REAL* pblendpos; /* preset blend positions */
-    INT pblendcount;
-    GpMatrix transform;
-};
-
-struct GpLineGradient{
-    GpBrush brush;
-    GpPointF startpoint;
-    GpPointF endpoint;
-    ARGB startcolor;
-    ARGB endcolor;
-    RectF rect;
-    GpWrapMode wrap;
-    BOOL gamma;
-    REAL* blendfac;  /* blend factors */
-    REAL* blendpos;  /* blend positions */
-    INT blendcount;
-    ARGB* pblendcolor; /* preset blend colors */
-    REAL* pblendpos; /* preset blend positions */
-    INT pblendcount;
-    GpMatrix transform;
-};
-
-struct GpTexture{
-    GpBrush brush;
-    GpMatrix transform;
-    GpImage *image;
-    GpImageAttributes *imageattributes;
-    BYTE *bitmap_bits; /* image bits converted to ARGB and run through imageattributes */
-};
-
-struct GpPath{
-    GpFillMode fill;
-    GpPathData pathdata;
-    BOOL newfigure; /* whether the next drawing action starts a new figure */
-    INT datalen; /* size of the arrays in pathdata */
-};
-
-struct GpPathIterator{
-    GpPathData pathdata;
-    INT subpath_pos;    /* for NextSubpath methods */
-    INT marker_pos;     /* for NextMarker methods */
-    INT pathtype_pos;   /* for NextPathType methods */
-};
-
-struct GpCustomLineCap{
-    CustomLineCapType type;
-    GpPathData pathdata;
-    BOOL fill;      /* TRUE for fill, FALSE for stroke */
-    GpLineCap cap;  /* as far as I can tell, this value is ignored */
-    REAL inset;     /* how much to adjust the end of the line */
-    GpLineJoin join;
-    REAL scale;
-};
-
-struct GpAdjustableArrowCap{
-    GpCustomLineCap cap;
-};
-
-struct GpImage{
-    IWICBitmapDecoder *decoder;
-    ImageType type;
-    GUID format;
-    UINT flags;
-    UINT frame_count, current_frame;
-    ColorPalette *palette;
-    REAL xres, yres;
-    LONG busy;
-};
-
-struct GpMetafile{
-    GpImage image;
-    GpRectF bounds;
-    GpUnit unit;
-    MetafileType metafile_type;
-    HENHMETAFILE hemf;
-    int preserve_hemf; /* if true, hemf belongs to the app and should not be deleted */
-
-    /* recording */
-    HDC record_dc;
-    GpGraphics *record_graphics;
-    BYTE *comment_data;
-    DWORD comment_data_size;
-    DWORD comment_data_length;
-    IStream *record_stream;
-    BOOL auto_frame; /* If true, determine the frame automatically */
-    GpPointF auto_frame_min, auto_frame_max;
-    DWORD next_object_id;
-
-    /* playback */
-    GpGraphics *playback_graphics;
-    HDC playback_dc;
-    GpPointF playback_points[3];
-    GpRectF src_rect;
-    HANDLETABLE *handle_table;
-    int handle_count;
-    XFORM gdiworldtransform;
-    GpMatrix *world_transform;
-    GpUnit page_unit;
-    REAL page_scale;
-    GpRegion *base_clip; /* clip region in device space for all metafile output */
-    GpRegion *clip; /* clip region within the metafile */
-    struct list containers;
-};
-
-struct GpBitmap{
-    GpImage image;
-    INT width;
-    INT height;
-    PixelFormat format;
-    ImageLockMode lockmode;
-    BYTE *bitmapbits;   /* pointer to the buffer we passed in BitmapLockBits */
-    HBITMAP hbitmap;
-    HDC hdc;
-    BYTE *bits; /* actual image bits if this is a DIB */
-    INT stride; /* stride of bits if this is a DIB */
-    BYTE *own_bits; /* image bits that need to be freed with this object */
-    INT lockx, locky; /* X and Y coordinates of the rect when a bitmap is locked for writing. */
-    IWICMetadataReader *metadata_reader; /* NULL if there is no metadata */
-    UINT prop_count;
-    PropertyItem *prop_item; /* cached image properties */
-};
-
-struct GpCachedBitmap{
-    GpImage *image;
-};
-
-struct color_key{
-    BOOL enabled;
-    ARGB low;
-    ARGB high;
-};
-
-struct color_matrix{
-    BOOL enabled;
-    ColorMatrixFlags flags;
-    ColorMatrix colormatrix;
-    ColorMatrix graymatrix;
-};
-
-struct color_remap_table{
-    BOOL enabled;
-    INT mapsize;
-    ColorMap *colormap;
-};
-
-struct GpImageAttributes{
-    WrapMode wrap;
-    ARGB outside_color;
-    BOOL clamp;
-    struct color_key colorkeys[ColorAdjustTypeCount];
-    struct color_matrix colormatrices[ColorAdjustTypeCount];
-    struct color_remap_table colorremaptables[ColorAdjustTypeCount];
-    BOOL gamma_enabled[ColorAdjustTypeCount];
-    REAL gamma[ColorAdjustTypeCount];
-};
-
-struct GpFont{
-    GpFontFamily *family;
-    OUTLINETEXTMETRICW otm;
-    REAL emSize; /* in font units */
-    Unit unit;
-};
-
-extern const struct GpStringFormat default_drawstring_format DECLSPEC_HIDDEN;
-
-struct GpStringFormat{
-    INT attr;
-    LANGID lang;
-    LANGID digitlang;
-    StringAlignment align;
-    StringTrimming trimming;
-    HotkeyPrefix hkprefix;
-    StringAlignment line_align;
-    StringDigitSubstitute digitsub;
-    INT tabcount;
-    REAL firsttab;
-    REAL *tabs;
-    CharacterRange *character_ranges;
-    INT range_count;
-    BOOL generic_typographic;
-};
-
-extern void init_generic_string_formats(void) DECLSPEC_HIDDEN;
-extern void free_generic_string_formats(void) DECLSPEC_HIDDEN;
-
-struct GpFontCollection{
-    GpFontFamily **FontFamilies;
-    INT count;
-    INT allocated;
-};
-
-struct GpFontFamily{
-    WCHAR FamilyName[LF_FACESIZE];
-    UINT16 em_height, ascent, descent, line_spacing; /* in font units */
-    int dpi;
-};
-
-/* internal use */
-typedef enum RegionType
-{
-    RegionDataRect          = 0x10000000,
-    RegionDataPath          = 0x10000001,
-    RegionDataEmptyRect     = 0x10000002,
-    RegionDataInfiniteRect  = 0x10000003,
-} RegionType;
-
-struct region_element
-{
-    DWORD type; /* Rectangle, Path, SpecialRectangle, or CombineMode */
-    union
-    {
-        GpRectF rect;
-        GpPath *path;
-        struct
-        {
-            struct region_element *left;  /* the original region */
-            struct region_element *right; /* what *left was combined with */
-        } combine;
-    } elementdata;
-};
-
-struct GpRegion{
-    DWORD num_children;
-    region_element node;
-};
-
-typedef GpStatus (*gdip_format_string_callback)(HDC hdc,
-    GDIPCONST WCHAR *string, INT index, INT length, GDIPCONST GpFont *font,
-    GDIPCONST RectF *rect, GDIPCONST GpStringFormat *format,
-    INT lineno, const RectF *bounds, INT *underlined_indexes,
-    INT underlined_index_count, void *user_data);
-
-GpStatus gdip_format_string(HDC hdc,
-    GDIPCONST WCHAR *string, INT length, GDIPCONST GpFont *font,
-    GDIPCONST RectF *rect, GDIPCONST GpStringFormat *format, int ignore_empty_clip,
-    gdip_format_string_callback callback, void *user_data) DECLSPEC_HIDDEN;
-
-void get_log_fontW(const GpFont *, GpGraphics *, LOGFONTW *) DECLSPEC_HIDDEN;
-
-static inline BOOL image_lock(GpImage *image, BOOL *unlock)
-{
-    LONG tid = GetCurrentThreadId(), owner_tid;
-    owner_tid = InterlockedCompareExchange(&image->busy, tid, 0);
-    *unlock = !owner_tid;
-    return !owner_tid || owner_tid==tid;
-}
-
-static inline void image_unlock(GpImage *image, BOOL unlock)
-{
-    if (unlock) image->busy = 0;
-}
-
-#endif /* __WINE_GP_PRIVATE_H_ */