Files
Aerofoil/PortabilityLayer/QDGraf.h

94 lines
2.2 KiB
C
Raw Normal View History

#pragma once
#include <stdint.h>
#include "GpPixelFormat.h"
2019-12-30 20:53:11 -05:00
#include "PLHandle.h"
#include "QDState.h"
#include "QDPort.h"
2019-12-30 20:53:11 -05:00
namespace PortabilityLayer
{
class FontFamily;
struct RGBAColor;
class ScanlineMask;
}
struct PixMap;
2019-12-30 20:53:11 -05:00
struct Picture;
struct Point;
struct Rect;
2019-12-24 02:35:24 -05:00
struct IGpDisplayDriver;
2019-12-21 18:40:17 -05:00
struct IGpDisplayDriverSurface;
2019-12-30 20:53:11 -05:00
class PLPasStr;
2019-12-30 20:53:11 -05:00
struct DrawSurface final
{
2019-12-30 20:53:11 -05:00
DrawSurface()
: m_port(PortabilityLayer::QDPortType_DrawSurface)
2019-12-21 18:40:17 -05:00
, m_ddSurface(nullptr)
{
}
2019-12-30 20:53:11 -05:00
explicit DrawSurface(PortabilityLayer::QDPortType overridePortType)
2019-12-21 18:40:17 -05:00
: m_port(overridePortType)
, m_ddSurface(nullptr)
{
}
2019-12-29 06:38:18 -05:00
PLError_t Init(const Rect &rect, GpPixelFormat_t pixelFormat)
{
2019-12-29 06:38:18 -05:00
if (PLError_t errorCode = m_port.Init(rect, pixelFormat))
return errorCode;
2019-12-29 06:38:18 -05:00
return PLErrors::kNone;
}
2019-12-21 18:40:17 -05:00
bool Resize(const Rect &rect)
{
return m_port.Resize(rect);
}
2019-12-24 02:35:24 -05:00
void PushToDDSurface(IGpDisplayDriver *displayDriver);
2019-12-30 20:53:11 -05:00
void FillRect(const Rect &rect);
void FillRectWithPattern8x8(const Rect &rect, const uint8_t *pattern);
void FrameRect(const Rect &rect);
2019-12-31 02:42:20 -05:00
void FrameRoundRect(const Rect &rect, int quadrantWidth, int quadrantHeight);
2019-12-30 20:53:11 -05:00
void InvertFrameRect(const Rect &rect, const uint8_t *pattern);
void InvertFillRect(const Rect &rect, const uint8_t *pattern);
void FillEllipse(const Rect &rect);
void FrameEllipse(const Rect &rect);
void FillScanlineMask(const PortabilityLayer::ScanlineMask *scanlineMask);
void DrawLine(const Point &a, const Point &b);
void InvertDrawLine(const Point &a, const Point &b, const uint8_t *pattern);
void SetForeColor(const PortabilityLayer::RGBAColor &color);
const PortabilityLayer::RGBAColor &GetForeColor() const;
void SetBackColor(const PortabilityLayer::RGBAColor &color);
const PortabilityLayer::RGBAColor &GetBackColor() const;
void SetApplicationFont(int size, int variationFlags);
void SetSystemFont(int size, int variationFlags);
void DrawString(const Point &point, const PLPasStr &str);
void DrawPicture(THandle<Picture> pictHandle, const Rect &rect);
void SetPattern8x8(const uint8_t *pattern);
void ClearPattern();
void SetMaskMode(bool maskMode);
Rect GetClipRect() const;
void SetClipRect(const Rect &rect);
// Must be the first item
PortabilityLayer::QDPort m_port;
2019-12-21 18:40:17 -05:00
IGpDisplayDriverSurface *m_ddSurface;
};