Files
Aerofoil/PortabilityLayer/PLQDraw.h

168 lines
3.7 KiB
C
Raw Normal View History

2019-11-11 00:11:59 -05:00
#pragma once
#include "PLCore.h"
#include "QDGraf.h"
#include "SharedTypes.h"
2019-11-11 00:11:59 -05:00
namespace PortabilityLayer
{
class ScanlineMask;
}
2019-11-11 00:11:59 -05:00
struct Dialog;
enum IconSuiteFlags
{
svAllLargeData = 1,
};
enum TextFlags
{
bold = 1,
};
enum SystemFontID
{
systemFont = 0, // System font
applFont = 1, // Application font
};
enum SystemColorID
{
2019-12-12 23:37:40 -05:00
whiteColor = 1,
blackColor,
yellowColor,
magentaColor,
redColor,
cyanColor,
greenColor,
blueColor,
2019-11-11 00:11:59 -05:00
};
enum CopyBitsMode
{
srcCopy,
srcXor,
2019-12-12 23:37:40 -05:00
transparent,
2019-11-11 00:11:59 -05:00
};
enum PenModeID
{
2019-12-27 18:05:32 -05:00
PenMode_Solid,
PenMode_Pattern,
PenMode_PatternInvert,
2019-11-11 00:11:59 -05:00
};
struct CIcon
{
};
struct BitMap
{
Rect m_rect;
GpPixelFormat_t m_pixelFormat;
2019-12-21 18:40:17 -05:00
size_t m_pitch;
void *m_data;
void Init(const Rect &rect, GpPixelFormat_t pixelFormat, size_t pitch, void *dataPtr);
2019-11-11 00:11:59 -05:00
};
2019-12-30 20:53:11 -05:00
class RGBColor
2019-11-11 00:11:59 -05:00
{
2019-12-30 20:53:11 -05:00
public:
RGBColor(uint8_t r, uint8_t g, uint8_t b);
RGBColor(const RGBColor &other);
uint8_t GetRed() const;
uint8_t GetGreen() const;
uint8_t GetBlue() const;
private:
uint8_t m_r;
uint8_t m_g;
uint8_t m_b;
2019-11-11 00:11:59 -05:00
};
typedef CIcon *CIconPtr;
typedef CIconPtr *CIconHandle;
typedef PortabilityLayer::QDPort GrafPort;
typedef GrafPort *GrafPtr;
2019-11-11 00:11:59 -05:00
typedef Byte Pattern[8];
void GetPort(GrafPtr *graf);
void SetPort(GrafPtr graf);
void SetPortWindowPort(WindowPtr window);
void SetPortDialogPort(Dialog *dialog);
void EndUpdate(WindowPtr graf);
2019-11-11 00:11:59 -05:00
2019-12-29 06:38:18 -05:00
PLError_t GetIconSuite(Handle *suite, short resID, IconSuiteFlags flags);
2019-12-29 22:12:11 -05:00
PLError_t PlotIconSuite(Rect *rect, Handle iconSuite);
2019-11-11 00:11:59 -05:00
void SetRect(Rect *rect, short left, short top, short right, short bottom);
int TextWidth(const PLPasStr &str, int firstChar1Based, int length);
void SetOrigin(int x, int y);
void ForeColor(SystemColorID color);
void BackColor(SystemColorID color);
void GetForeColor(RGBColor *color);
void ClipRect(const Rect *rect);
void GetClip(Rect *rect);
2019-12-27 18:05:32 -05:00
void PenInvertMode(bool invertMode);
void PenMask(bool maskMode);
2019-11-11 00:11:59 -05:00
void PenPat(const Pattern *pattern);
void PenSize(int w, int h);
void PenNormal();
void InvertRect(const Rect *rect);
void InsetRect(Rect *rect, int x, int y);
Pattern *GetQDGlobalsGray(Pattern *pattern);
Pattern *GetQDGlobalsBlack(Pattern *pattern);
// Finds a pattern from a 'PAT#' resource
// Index is 1-based
void GetIndPattern(Pattern *pattern, int patListID, int index);
void DebugPixMap(PixMap **pixMap, const char *outName);
2019-11-11 00:11:59 -05:00
void CopyBits(const BitMap *srcBitmap, BitMap *destBitmap, const Rect *srcRect, const Rect *destRect, CopyBitsMode copyMode);
void CopyBitsConstrained(const BitMap *srcBitmap, BitMap *destBitmap, const Rect *srcRect, const Rect *destRect, CopyBitsMode copyMode, const Rect *constraintRect);
2019-11-11 00:11:59 -05:00
void CopyMask(const BitMap *srcBitmap, const BitMap *maskBitmap, BitMap *destBitmap, const Rect *srcRect, const Rect *maskRect, const Rect *destRect);
void CopyMaskConstrained(const BitMap *srcBitmap, const BitMap *maskBitmap, BitMap *destBitmap, const Rect *srcRectBase, const Rect *maskRectBase, const Rect *destRectBase, const Rect *constraintRect);
2019-11-11 00:11:59 -05:00
bool PointInScanlineMask(Point point, PortabilityLayer::ScanlineMask *scanlineMask);
2019-11-11 00:11:59 -05:00
2019-12-30 20:53:11 -05:00
BitMap *GetPortBitMapForCopyBits(DrawSurface *grafPtr);
DrawSurface *GetWindowPort(WindowPtr window);
2019-11-11 00:11:59 -05:00
// Computes A - B and returns it packed?
Int32 DeltaPoint(Point pointA, Point pointB);
// Subtracts srcPoint from destPoint (reverse of DeltaPoint)
void SubPt(Point srcPoint, Point *destPoint);
Boolean SectRect(const Rect *rectA, const Rect *rectB, Rect *outIntersection);
Boolean PtInRect(Point point, const Rect *rect);
void RestoreDeviceClut(void *unknown);
2019-12-30 20:53:11 -05:00
inline RGBColor::RGBColor(uint8_t r, uint8_t g, uint8_t b)
: m_r(r)
, m_g(g)
, m_b(b)
{
}
inline RGBColor::RGBColor(const RGBColor &other)
: m_r(other.m_r)
, m_g(other.m_g)
, m_b(other.m_b)
{
}