From: Alistair Leslie-Hughes leslie_alistair@hotmail.com
--- include/Makefile.in | 1 + include/gdiplus.h | 1 + include/gdiplusbase.h | 49 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 include/gdiplusbase.h
diff --git a/include/Makefile.in b/include/Makefile.in index 4f6a7084366..5938a0b05ba 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -334,6 +334,7 @@ SOURCES = \ gameux.idl \ gamingtcui.h \ gdiplus.h \ + gdiplusbase.h \ gdipluscolor.h \ gdipluscolormatrix.h \ gdipluseffects.h \ diff --git a/include/gdiplus.h b/include/gdiplus.h index b07e2beaaed..5f38ad0e648 100644 --- a/include/gdiplus.h +++ b/include/gdiplus.h @@ -28,6 +28,7 @@ namespace Gdiplus #include "gdiplusmem.h" };
+#include "gdiplusbase.h" #include "gdiplusenums.h" #include "gdiplustypes.h" #include "gdiplusinit.h" diff --git a/include/gdiplusbase.h b/include/gdiplusbase.h new file mode 100644 index 00000000000..5e13c41421a --- /dev/null +++ b/include/gdiplusbase.h @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2024 Alistair Leslie-Hughes + * + * 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 _GDIPLUSBASE_H +#define _GDIPLUSBASE_H + +#ifdef __cplusplus + +class GdiplusBase +{ +public: + void (operator delete)(void *p) + { + DllExports::GdipFree(p); + } + + void* (operator new)(size_t size) + { + return DllExports::GdipAlloc(size); + } + + void (operator delete[])(void* p) + { + DllExports::GdipFree(p); + } + + void* (operator new[])(size_t size) + { + return DllExports::GdipAlloc(size); + } +}; + +#endif + +#endif