wine/include/gdiplustypes.h
2015-06-09 18:05:48 +09:00

278 lines
4.7 KiB
C++

/*
* 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 _GDIPLUSTYPES_H
#define _GDIPLUSTYPES_H
typedef float REAL;
enum Status{
Ok = 0,
GenericError = 1,
InvalidParameter = 2,
OutOfMemory = 3,
ObjectBusy = 4,
InsufficientBuffer = 5,
NotImplemented = 6,
Win32Error = 7,
WrongState = 8,
Aborted = 9,
FileNotFound = 10,
ValueOverflow = 11,
AccessDenied = 12,
UnknownImageFormat = 13,
FontFamilyNotFound = 14,
FontStyleNotFound = 15,
NotTrueTypeFont = 16,
UnsupportedGdiplusVersion = 17,
GdiplusNotInitialized = 18,
PropertyNotFound = 19,
PropertyNotSupported = 20,
ProfileNotFound = 21
};
#ifdef __cplusplus
extern "C" {
#endif
typedef BOOL (CALLBACK * ImageAbort)(VOID *);
typedef ImageAbort DrawImageAbort;
typedef ImageAbort GetThumbnailImageAbort;
typedef struct GdiplusAbort GdiplusAbort;
typedef BOOL (CALLBACK * EnumerateMetafileProc)(EmfPlusRecordType,UINT,UINT,const BYTE*,VOID*);
#ifdef __cplusplus
}
#endif
#ifdef __cplusplus
class Point
{
public:
Point()
{
X = Y = 0;
}
Point(IN const Point &pt)
{
X = pt.X;
Y = pt.Y;
}
/* FIXME: missing constructor that takes a Size */
Point(IN INT x, IN INT y)
{
X = x;
Y = y;
}
Point operator+(IN const Point& pt) const
{
return Point(X + pt.X, Y + pt.Y);
}
Point operator-(IN const Point& pt) const
{
return Point(X - pt.X, Y - pt.Y);
}
BOOL Equals(IN const Point& pt)
{
return (X == pt.X) && (Y == pt.Y);
}
public:
INT X;
INT Y;
};
class PointF
{
public:
PointF()
{
X = Y = 0.0f;
}
PointF(IN const PointF &pt)
{
X = pt.X;
Y = pt.Y;
}
/* FIXME: missing constructor that takes a SizeF */
PointF(IN REAL x, IN REAL y)
{
X = x;
Y = y;
}
PointF operator+(IN const PointF& pt) const
{
return PointF(X + pt.X, Y + pt.Y);
}
PointF operator-(IN const PointF& pt) const
{
return PointF(X - pt.X, Y - pt.Y);
}
BOOL Equals(IN const PointF& pt)
{
return (X == pt.X) && (Y == pt.Y);
}
public:
REAL X;
REAL Y;
};
class PathData
{
public:
PathData()
{
Count = 0;
Points = NULL;
Types = NULL;
}
~PathData()
{
if (Points != NULL)
{
delete Points;
}
if (Types != NULL)
{
delete Types;
}
}
private:
PathData(const PathData &);
PathData& operator=(const PathData &);
public:
INT Count;
PointF* Points;
BYTE* Types;
};
/* FIXME: missing the methods. */
class RectF
{
public:
REAL X;
REAL Y;
REAL Width;
REAL Height;
};
/* FIXME: missing the methods. */
class Rect
{
public:
INT X;
INT Y;
INT Width;
INT Height;
};
class CharacterRange
{
public:
CharacterRange()
{
First = Length = 0;
}
CharacterRange(INT first, INT length)
{
First = first;
Length = length;
}
CharacterRange& operator=(const CharacterRange& rhs)
{
First = rhs.First;
Length = rhs.Length;
return *this;
}
public:
INT First;
INT Length;
};
#else /* end of c++ typedefs */
typedef struct Point
{
INT X;
INT Y;
} Point;
typedef struct PointF
{
REAL X;
REAL Y;
} PointF;
typedef struct PathData
{
INT Count;
PointF* Points;
BYTE* Types;
} PathData;
typedef struct RectF
{
REAL X;
REAL Y;
REAL Width;
REAL Height;
} RectF;
typedef struct Rect
{
INT X;
INT Y;
INT Width;
INT Height;
} Rect;
typedef struct CharacterRange
{
INT First;
INT Length;
} CharacterRange;
typedef enum Status Status;
#endif /* end of c typedefs */
#endif