Files
milsko/src/backend/mac/quickDraw.c
2025-10-04 06:48:48 +00:00

407 lines
11 KiB
C

/* $Id $ */
#include "mac.h"
#include "quickDraw.h"
#include <dlfcn.h>
void quickDrawBackendUserDataInit(mac_backend_userdata ud) {
void* carbonLib = dlopen("CarbonLib", RTLD_LAZY | RTLD_LOCAL);
ud = malloc(sizeof(struct mac_backend_userdata_t));
#define LOAD_QD_FUNC(name) ud->name = dlsym(carbonLib, #name)
LOAD_QD_FUNC(GetPortCustomXFerProc);
LOAD_QD_FUNC(SetPortCustomXFerProc);
LOAD_QD_FUNC(OpenCursorComponent);
LOAD_QD_FUNC(CloseCursorComponent);
LOAD_QD_FUNC(SetCursorComponent);
LOAD_QD_FUNC(CursorComponentChanged);
LOAD_QD_FUNC(CursorComponentSetData);
LOAD_QD_FUNC(IsValidPort);
LOAD_QD_FUNC(GetPortPixMap);
LOAD_QD_FUNC(GetPortBitMapForCopyBits);
LOAD_QD_FUNC(GetPortBounds);
LOAD_QD_FUNC(GetPortForeColor);
LOAD_QD_FUNC(GetPortBackColor);
LOAD_QD_FUNC(GetPortOpColor);
LOAD_QD_FUNC(GetPortHiliteColor);
LOAD_QD_FUNC(GetPortGrafProcs);
LOAD_QD_FUNC(GetPortTextFont);
LOAD_QD_FUNC(GetPortTextFace);
LOAD_QD_FUNC(GetPortTextMode);
LOAD_QD_FUNC(GetPortTextSize);
LOAD_QD_FUNC(GetPortChExtra);
LOAD_QD_FUNC(GetPortFracHPenLocation);
LOAD_QD_FUNC(GetPortSpExtra);
LOAD_QD_FUNC(GetPortPenVisibility);
LOAD_QD_FUNC(GetPortVisibleRegion);
LOAD_QD_FUNC(GetPortClipRegion);
LOAD_QD_FUNC(GetPortBackPixPat);
LOAD_QD_FUNC(GetPortPenPixPat);
LOAD_QD_FUNC(GetPortFillPixPat);
LOAD_QD_FUNC(GetPortPenSize);
LOAD_QD_FUNC(GetPortPenMode);
LOAD_QD_FUNC(GetPortPenLocation);
LOAD_QD_FUNC(IsPortRegionBeingDefined);
LOAD_QD_FUNC(IsPortPictureBeingDefined);
LOAD_QD_FUNC(IsPortPolyBeingDefined);
LOAD_QD_FUNC(IsPortOffscreen);
LOAD_QD_FUNC(IsPortColor);
LOAD_QD_FUNC(SetPortBounds);
LOAD_QD_FUNC(SetPortOpColor);
LOAD_QD_FUNC(SetPortGrafProcs);
LOAD_QD_FUNC(SetPortVisibleRegion);
LOAD_QD_FUNC(SetPortClipRegion);
LOAD_QD_FUNC(SetPortPenPixPat);
LOAD_QD_FUNC(SetPortFillPixPat);
LOAD_QD_FUNC(SetPortBackPixPat);
LOAD_QD_FUNC(SetPortPenSize);
LOAD_QD_FUNC(SetPortPenMode);
LOAD_QD_FUNC(SetPortFracHPenLocation);
LOAD_QD_FUNC(GetPixBounds);
LOAD_QD_FUNC(GetPixDepth);
LOAD_QD_FUNC(GetQDGlobalsRandomSeed);
LOAD_QD_FUNC(GetQDGlobalsScreenBits);
LOAD_QD_FUNC(GetQDGlobalsArrow);
LOAD_QD_FUNC(GetQDGlobalsDarkGray);
LOAD_QD_FUNC(GetQDGlobalsLightGray);
LOAD_QD_FUNC(GetQDGlobalsGray);
LOAD_QD_FUNC(GetQDGlobalsBlack);
LOAD_QD_FUNC(GetQDGlobalsWhite);
LOAD_QD_FUNC(GetQDGlobalsThePort);
LOAD_QD_FUNC(SetQDGlobalsRandomSeed);
LOAD_QD_FUNC(SetQDGlobalsArrow);
LOAD_QD_FUNC(GetRegionBounds);
LOAD_QD_FUNC(IsRegionRectangular);
LOAD_QD_FUNC(CreateNewPort);
LOAD_QD_FUNC(DisposePort);
LOAD_QD_FUNC(SetQDError);
LOAD_QD_FUNC(QDIsPortBuffered);
LOAD_QD_FUNC(QDIsPortBufferDirty);
LOAD_QD_FUNC(QDFlushPortBuffer);
LOAD_QD_FUNC(QDGetDirtyRegion);
LOAD_QD_FUNC(QDSetDirtyRegion);
LOAD_QD_FUNC(CreateCGContextForPort);
LOAD_QD_FUNC(ClipCGContextToRegion);
LOAD_QD_FUNC(SyncCGContextOriginWithPort);
LOAD_QD_FUNC(CreateNewPortForCGDisplayID);
LOAD_QD_FUNC(QDDisplayWaitCursor);
LOAD_QD_FUNC(QDSetPatternOrigin);
LOAD_QD_FUNC(QDGetPatternOrigin);
LOAD_QD_FUNC(LMGetScrVRes);
LOAD_QD_FUNC(LMSetScrVRes);
LOAD_QD_FUNC(LMGetScrHRes);
LOAD_QD_FUNC(LMSetScrHRes);
LOAD_QD_FUNC(LMGetMainDevice);
LOAD_QD_FUNC(LMSetMainDevice);
LOAD_QD_FUNC(LMGetDeviceList);
LOAD_QD_FUNC(LMSetDeviceList);
LOAD_QD_FUNC(LMGetQDColors);
LOAD_QD_FUNC(LMSetQDColors);
LOAD_QD_FUNC(LMGetWidthListHand);
LOAD_QD_FUNC(LMSetWidthListHand);
LOAD_QD_FUNC(LMGetHiliteMode);
LOAD_QD_FUNC(LMSetHiliteMode);
LOAD_QD_FUNC(LMGetWidthPtr);
LOAD_QD_FUNC(LMSetWidthPtr);
LOAD_QD_FUNC(LMGetWidthTabHandle);
LOAD_QD_FUNC(LMSetWidthTabHandle);
LOAD_QD_FUNC(LMGetLastSPExtra);
LOAD_QD_FUNC(LMSetLastSPExtra);
LOAD_QD_FUNC(LMGetLastFOND);
LOAD_QD_FUNC(LMSetLastFOND);
LOAD_QD_FUNC(LMGetFractEnable);
LOAD_QD_FUNC(LMSetFractEnable);
LOAD_QD_FUNC(LMGetTheGDevice);
LOAD_QD_FUNC(LMSetTheGDevice);
LOAD_QD_FUNC(LMGetHiliteRGB);
LOAD_QD_FUNC(LMSetHiliteRGB);
LOAD_QD_FUNC(LMGetCursorNew);
LOAD_QD_FUNC(LMSetCursorNew);
LOAD_QD_FUNC(QDRegionToRects);
LOAD_QD_FUNC(SetPort);
LOAD_QD_FUNC(GetPort);
LOAD_QD_FUNC(GrafDevice);
LOAD_QD_FUNC(SetPortBits);
LOAD_QD_FUNC(PortSize);
LOAD_QD_FUNC(MovePortTo);
LOAD_QD_FUNC(SetOrigin);
LOAD_QD_FUNC(SetClip);
LOAD_QD_FUNC(GetClip);
LOAD_QD_FUNC(ClipRect);
LOAD_QD_FUNC(BackPat);
LOAD_QD_FUNC(InitCursor);
LOAD_QD_FUNC(SetCursor);
LOAD_QD_FUNC(HideCursor);
LOAD_QD_FUNC(ShowCursor);
LOAD_QD_FUNC(ObscureCursor);
LOAD_QD_FUNC(HidePen);
LOAD_QD_FUNC(ShowPen);
LOAD_QD_FUNC(GetPen);
LOAD_QD_FUNC(GetPenState);
LOAD_QD_FUNC(SetPenState);
LOAD_QD_FUNC(PenSize);
LOAD_QD_FUNC(PenMode);
LOAD_QD_FUNC(PenPat);
LOAD_QD_FUNC(PenNormal);
LOAD_QD_FUNC(MoveTo);
LOAD_QD_FUNC(Move);
LOAD_QD_FUNC(LineTo);
LOAD_QD_FUNC(Line);
LOAD_QD_FUNC(ForeColor);
LOAD_QD_FUNC(BackColor);
LOAD_QD_FUNC(ColorBit);
LOAD_QD_FUNC(SetRect);
LOAD_QD_FUNC(OffsetRect);
LOAD_QD_FUNC(InsetRect);
LOAD_QD_FUNC(SectRect);
LOAD_QD_FUNC(UnionRect);
LOAD_QD_FUNC(EqualRect);
LOAD_QD_FUNC(EmptyRect);
LOAD_QD_FUNC(FrameRect);
LOAD_QD_FUNC(PaintRect);
LOAD_QD_FUNC(EraseRect);
LOAD_QD_FUNC(InvertRect);
LOAD_QD_FUNC(FillRect);
LOAD_QD_FUNC(FrameOval);
LOAD_QD_FUNC(PaintOval);
LOAD_QD_FUNC(EraseOval);
LOAD_QD_FUNC(InvertOval);
LOAD_QD_FUNC(FillOval);
LOAD_QD_FUNC(FrameRoundRect);
LOAD_QD_FUNC(PaintRoundRect);
LOAD_QD_FUNC(EraseRoundRect);
LOAD_QD_FUNC(InvertRoundRect);
LOAD_QD_FUNC(FillRoundRect);
LOAD_QD_FUNC(FrameArc);
LOAD_QD_FUNC(PaintArc);
LOAD_QD_FUNC(EraseArc);
LOAD_QD_FUNC(InvertArc);
LOAD_QD_FUNC(FillArc);
LOAD_QD_FUNC(NewRgn);
LOAD_QD_FUNC(OpenRgn);
LOAD_QD_FUNC(CloseRgn);
LOAD_QD_FUNC(BitMapToRegion);
LOAD_QD_FUNC(HandleToRgn);
LOAD_QD_FUNC(RgnToHandle);
LOAD_QD_FUNC(DisposeRgn);
LOAD_QD_FUNC(CopyRgn);
LOAD_QD_FUNC(SetEmptyRgn);
LOAD_QD_FUNC(SetRectRgn);
LOAD_QD_FUNC(RectRgn);
LOAD_QD_FUNC(OffsetRgn);
LOAD_QD_FUNC(InsetRgn);
LOAD_QD_FUNC(SectRgn);
LOAD_QD_FUNC(UnionRgn);
LOAD_QD_FUNC(DiffRgn);
LOAD_QD_FUNC(XorRgn);
LOAD_QD_FUNC(RectInRgn);
LOAD_QD_FUNC(EqualRgn);
LOAD_QD_FUNC(EmptyRgn);
LOAD_QD_FUNC(FrameRgn);
LOAD_QD_FUNC(PaintRgn);
LOAD_QD_FUNC(EraseRgn);
LOAD_QD_FUNC(InvertRgn);
LOAD_QD_FUNC(FillRgn);
LOAD_QD_FUNC(ScrollRect);
LOAD_QD_FUNC(CopyBits);
LOAD_QD_FUNC(SeedFill);
LOAD_QD_FUNC(CalcMask);
LOAD_QD_FUNC(CopyMask);
LOAD_QD_FUNC(OpenPicture);
LOAD_QD_FUNC(PicComment);
LOAD_QD_FUNC(ClosePicture);
LOAD_QD_FUNC(DrawPicture);
LOAD_QD_FUNC(KillPicture);
LOAD_QD_FUNC(OpenPoly);
LOAD_QD_FUNC(ClosePoly);
LOAD_QD_FUNC(KillPoly);
LOAD_QD_FUNC(OffsetPoly);
LOAD_QD_FUNC(FramePoly);
LOAD_QD_FUNC(PaintPoly);
LOAD_QD_FUNC(ErasePoly);
LOAD_QD_FUNC(InvertPoly);
LOAD_QD_FUNC(FillPoly);
LOAD_QD_FUNC(SetPt);
LOAD_QD_FUNC(LocalToGlobal);
LOAD_QD_FUNC(GlobalToLocal);
LOAD_QD_FUNC(Random);
LOAD_QD_FUNC(StuffHex);
LOAD_QD_FUNC(GetPixel);
LOAD_QD_FUNC(ScalePt);
LOAD_QD_FUNC(MapPt);
LOAD_QD_FUNC(MapRect);
LOAD_QD_FUNC(MapRgn);
LOAD_QD_FUNC(MapPoly);
LOAD_QD_FUNC(SetStdProcs);
LOAD_QD_FUNC(StdRect);
LOAD_QD_FUNC(StdRRect);
LOAD_QD_FUNC(StdOval);
LOAD_QD_FUNC(StdArc);
LOAD_QD_FUNC(StdPoly);
LOAD_QD_FUNC(StdRgn);
LOAD_QD_FUNC(StdBits);
LOAD_QD_FUNC(StdComment);
LOAD_QD_FUNC(StdGetPic);
LOAD_QD_FUNC(StdPutPic);
LOAD_QD_FUNC(StdOpcode);
LOAD_QD_FUNC(AddPt);
LOAD_QD_FUNC(EqualPt);
LOAD_QD_FUNC(PtInRect);
LOAD_QD_FUNC(Pt2Rect);
LOAD_QD_FUNC(PtToAngle);
LOAD_QD_FUNC(SubPt);
LOAD_QD_FUNC(PtInRgn);
LOAD_QD_FUNC(StdLine);
LOAD_QD_FUNC(NewPixMap);
LOAD_QD_FUNC(DisposePixMap);
LOAD_QD_FUNC(CopyPixMap);
LOAD_QD_FUNC(NewPixPat);
LOAD_QD_FUNC(DisposePixPat);
LOAD_QD_FUNC(CopyPixPat);
LOAD_QD_FUNC(PenPixPat);
LOAD_QD_FUNC(BackPixPat);
LOAD_QD_FUNC(GetPixPat);
LOAD_QD_FUNC(MakeRGBPat);
LOAD_QD_FUNC(FillCRect);
LOAD_QD_FUNC(FillCOval);
LOAD_QD_FUNC(FillCRoundRect);
LOAD_QD_FUNC(FillCArc);
LOAD_QD_FUNC(FillCRgn);
LOAD_QD_FUNC(FillCPoly);
LOAD_QD_FUNC(RGBForeColor);
LOAD_QD_FUNC(RGBBackColor);
LOAD_QD_FUNC(SetCPixel);
LOAD_QD_FUNC(SetPortPix);
LOAD_QD_FUNC(GetCPixel);
LOAD_QD_FUNC(GetForeColor);
LOAD_QD_FUNC(GetBackColor);
LOAD_QD_FUNC(SeedCFill);
LOAD_QD_FUNC(CalcCMask);
LOAD_QD_FUNC(OpenCPicture);
LOAD_QD_FUNC(OpColor);
LOAD_QD_FUNC(HiliteColor);
LOAD_QD_FUNC(DisposeCTable);
LOAD_QD_FUNC(GetCTable);
LOAD_QD_FUNC(GetCCursor);
LOAD_QD_FUNC(SetCCursor);
LOAD_QD_FUNC(AllocCursor);
LOAD_QD_FUNC(DisposeCCursor);
LOAD_QD_FUNC(SetStdCProcs);
LOAD_QD_FUNC(GetMaxDevice);
LOAD_QD_FUNC(GetCTSeed);
LOAD_QD_FUNC(GetDeviceList);
LOAD_QD_FUNC(GetMainDevice);
LOAD_QD_FUNC(GetNextDevice);
LOAD_QD_FUNC(TestDeviceAttribute);
LOAD_QD_FUNC(SetDeviceAttribute);
LOAD_QD_FUNC(InitGDevice);
LOAD_QD_FUNC(NewGDevice);
LOAD_QD_FUNC(DisposeGDevice);
LOAD_QD_FUNC(SetGDevice);
LOAD_QD_FUNC(GetGDevice);
LOAD_QD_FUNC(Color2Index);
LOAD_QD_FUNC(Index2Color);
LOAD_QD_FUNC(InvertColor);
LOAD_QD_FUNC(RealColor);
LOAD_QD_FUNC(GetSubTable);
LOAD_QD_FUNC(MakeITable);
LOAD_QD_FUNC(AddSearch);
LOAD_QD_FUNC(AddComp);
LOAD_QD_FUNC(DelSearch);
LOAD_QD_FUNC(DelComp);
LOAD_QD_FUNC(SetClientID);
LOAD_QD_FUNC(ProtectEntry);
LOAD_QD_FUNC(ReserveEntry);
LOAD_QD_FUNC(SetEntries);
LOAD_QD_FUNC(SaveEntries);
LOAD_QD_FUNC(RestoreEntries);
LOAD_QD_FUNC(QDError);
LOAD_QD_FUNC(CopyDeepMask);
LOAD_QD_FUNC(DeviceLoop);
LOAD_QD_FUNC(GetMaskTable);
LOAD_QD_FUNC(GetPattern);
LOAD_QD_FUNC(GetCursor);
LOAD_QD_FUNC(GetPicture);
LOAD_QD_FUNC(DeltaPoint);
LOAD_QD_FUNC(ShieldCursor);
LOAD_QD_FUNC(ScreenRes);
LOAD_QD_FUNC(GetIndPattern);
LOAD_QD_FUNC(deltapoint);
LOAD_QD_FUNC(PackBits);
LOAD_QD_FUNC(UnpackBits);
LOAD_QD_FUNC(SlopeFromAngle);
LOAD_QD_FUNC(AngleFromSlope);
#undef LOAD_QD_FUNC
}
static MwLL quickdraw_create(MwLL parent, int x, int y, int width, int height) {
return NULL;
};
static void quickdraw_destroy(MwLL handle) {
return;
};
static void quickdraw_polygon(MwLL handle, MwPoint* points, int points_count, MwLLColor color) {
return;
};
static MwLLColor quickdraw_allocColor(MwLL handle, int r, int g, int b) {
return NULL;
};
static void quickdraw_freeColor(MwLLColor color) {
return;
};
static void quickdraw_getXYWH(MwLL handle, int* x, int* y, unsigned int* w, unsigned int* h) {
return;
};
static void quickdraw_setXY(MwLL handle, int x, int y) {
return;
};
static void quickdraw_setWH(MwLL handle, int w, int h) {
return;
};
static void quickdraw_setTitle(MwLL handle, const char* title) {
return;
};
static int quickdraw_pending(MwLL handle) {
return 0;
};
static void quickdraw_nextEvent(MwLL handle) {
return;
};
static MwLLPixmap quickdraw_createPixmap(MwLL handle, unsigned char* data, int width, int height) {
return NULL;
};
static void quickdraw_drawPixmap(MwLL handle, MwRect* rect, MwLLPixmap pixmap) {
return;
};
static void quickdraw_setIcon(MwLL handle, MwLLPixmap pixmap) {
return;
};
static void quickdraw_forceRender(MwLL handle) {
return;
};
static mac_backend quickdraw_backend = {
.create = quickdraw_create,
.destroy = quickdraw_destroy,
.polygon = quickdraw_polygon,
.allocColor = quickdraw_allocColor,
.freeColor = quickdraw_freeColor,
.getXYWH = quickdraw_getXYWH,
.setXY = quickdraw_setXY,
.setWH = quickdraw_setWH,
.setTitle = quickdraw_setTitle,
.pending = quickdraw_pending,
.nextEvent = quickdraw_nextEvent,
.createPixmap = quickdraw_createPixmap,
.drawPixmap = quickdraw_drawPixmap,
.setIcon = quickdraw_setIcon,
.forceRender = quickdraw_forceRender,
};
mac_backend getQuickDrawBackend(void) {
return quickdraw_backend;
};