]> git.tdb.fi Git - libs/gui.git/commitdiff
Add decorations for things which should be exported from the library
authorMikko Rasa <tdb@tdb.fi>
Wed, 4 Jan 2023 12:29:08 +0000 (14:29 +0200)
committerMikko Rasa <tdb@tdb.fi>
Wed, 4 Jan 2023 14:26:47 +0000 (16:26 +0200)
27 files changed:
source/graphics/bmploader.h
source/graphics/devil/devilloader.h
source/graphics/display.h
source/graphics/glcontext.h
source/graphics/image.h
source/graphics/imageloader.h
source/graphics/jpeg/jpegloader.h
source/graphics/mspgui_api.h [new file with mode: 0644]
source/graphics/png/pngloader.h
source/graphics/quartz/quartzloader.h
source/graphics/simplewindow.h
source/graphics/videomode.h
source/graphics/vulkancontext.h
source/graphics/window.h
source/input/binarycontrol.h
source/input/bindings.h
source/input/control.h
source/input/controlscheme.h
source/input/device.h
source/input/gamecontroller.h
source/input/gesturedetector.h
source/input/hub.h
source/input/keyboard.h
source/input/keys.h
source/input/mouse.h
source/input/smoothcontrol.h
source/input/touchscreen.h

index 926516d8ca080d0eecfffc2b80f664537a6fa873..5f8ad0a6f48cba9b59263de7b09dd817411b44f5 100644 (file)
@@ -2,11 +2,12 @@
 #define MSP_GRAPHICS_BMPLOADER_H_
 
 #include <msp/graphics/imageloader.h>
+#include "mspgui_api.h"
 
 namespace Msp {
 namespace Graphics {
 
-class BmpLoader: public ImageLoader
+class MSPGUI_API BmpLoader: public ImageLoader
 {
 private:
        IO::Base &io;
index beab02fe7c95c8b7fec9a3ce18a224f58cfc62ff..87408132881780b27b68986cc5f7ab628e99cc1e 100644 (file)
@@ -2,11 +2,12 @@
 #define MSP_GRAPHICS_DEVILLOADER_H_
 
 #include <msp/graphics/imageloader.h>
+#include <msp/graphics/mspgui_api.h>
 
 namespace Msp {
 namespace Graphics {
 
-class DevilLoader: public ImageLoader
+class MSPGUI_API DevilLoader: public ImageLoader
 {
 private:
        IO::Base &io;
index 23ab57113ef0f626d8c4120468da6f60e6159c2b..5f84848d16781cb7a2ec76fa42e5f8d833674c6b 100644 (file)
@@ -7,6 +7,7 @@
 #include <sigc++/signal.h>
 #include "errordialog.h"
 #include "monitor.h"
+#include "mspgui_api.h"
 #include "videomode.h"
 
 namespace Msp {
@@ -14,7 +15,7 @@ namespace Graphics {
 
 class Window;
 
-class Display
+class MSPGUI_API Display
 {
 public:
        struct Private;
index ef374c1038efc6da274d5b62b370656a4b3fe2f7..38c36b109d9bfc0f14b3dcbbb6240d68fd6ff203 100644 (file)
@@ -2,6 +2,7 @@
 #define MSP_GRAPHICS_GLCONTEXT_H_
 
 #include <stdexcept>
+#include "mspgui_api.h"
 
 namespace Msp {
 namespace Graphics {
@@ -25,7 +26,7 @@ struct GLOptions
 };
 
 
-class unsupported_gl_mode: public std::runtime_error
+class MSPGUI_API unsupported_gl_mode: public std::runtime_error
 {
 public:
        unsupported_gl_mode(const GLOptions &);
@@ -35,7 +36,7 @@ private:
 };
 
 
-class GLContext
+class MSPGUI_API GLContext
 {
 private:
        struct Private;
index 3f8f556e85a42fa88e5f7f886918037b3143434e..15685c606e98353bf92d00c701c8f756f00b1fe2 100644 (file)
@@ -4,6 +4,7 @@
 #include <stdexcept>
 #include <string>
 #include <msp/io/seekable.h>
+#include "mspgui_api.h"
 #include "pixelformat.h"
 
 namespace Msp {
@@ -11,7 +12,7 @@ namespace Graphics {
 
 class ImageLoader;
 
-class Image
+class MSPGUI_API Image
 {
 public:
        struct Data
index 64a741089d957d95d1bfc9574ae9efc214f78bb3..345068cdc34a36bf41795f7a88059facd6c40516 100644 (file)
@@ -2,24 +2,25 @@
 #define MSP_GRAPHICS_IMAGELOADER_H_
 
 #include "image.h"
+#include "mspgui_api.h"
 
 namespace Msp {
 namespace Graphics {
 
-class unsupported_image_format: public std::runtime_error
+class MSPGUI_API unsupported_image_format: public std::runtime_error
 {
 public:
        unsupported_image_format(const std::string &w): std::runtime_error(w) { }
 };
 
-class bad_image_data: public std::runtime_error
+class MSPGUI_API bad_image_data: public std::runtime_error
 {
 public:
        bad_image_data(const std::string &w): std::runtime_error(w) { }
 };
 
 
-class ImageLoader
+class MSPGUI_API ImageLoader
 {
 public:
        enum State
index 88dc00c85e519d9b7c2c69e16ec774a956c18e8f..765183af1b4ca737e7c075f814f3c2b4dabec04d 100644 (file)
@@ -2,11 +2,12 @@
 #define MSP_GRAPHICS_JPEGLOADER_H_
 
 #include <msp/graphics/imageloader.h>
+#include <msp/graphics/mspgui_api.h>
 
 namespace Msp {
 namespace Graphics {
 
-class JpegLoader: public ImageLoader
+class MSPGUI_API JpegLoader: public ImageLoader
 {
 private:
        struct Private;
diff --git a/source/graphics/mspgui_api.h b/source/graphics/mspgui_api.h
new file mode 100644 (file)
index 0000000..de68f70
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef MSP_GUI_API_H_
+#define MSP_GUI_API_H_
+
+#if defined(_WIN32)
+#if defined(MSPGUI_BUILD)
+#define MSPGUI_API __declspec(dllexport)
+#elif defined(MSPGUI_IMPORT)
+#define MSPGUI_API __declspec(dllimport)
+#else
+#define MSPGUI_API
+#endif
+#elif defined(__GNUC__)
+#define MSPGUI_API __attribute__((visibility("default")))
+#else
+#define MSPGUI_API
+#endif
+
+#endif
index f334d82231f760489113667469abdd32e87f2a35..85baaef5e34287543480725f96dcc199e17f8270 100644 (file)
@@ -2,11 +2,12 @@
 #define MSP_GRAPHICS_PNGLOADER_H_
 
 #include <msp/graphics/imageloader.h>
+#include <msp/graphics/mspgui_api.h>
 
 namespace Msp {
 namespace Graphics {
 
-class PngLoader: public ImageLoader
+class MSPGUI_API PngLoader: public ImageLoader
 {
 private:
        struct Private;
index 73c74c00fc6e58eea38c675b94fe17a2a94781ce..9564ad20d31231a5e900e460cf6419d26a2a9055 100644 (file)
@@ -2,11 +2,12 @@
 #define MSP_GRAPHICS_QUARTZLOADER_H_
 
 #include <msp/graphics/imageloader.h>
+#include <msp/graphics/mspgui_api.h>
 
 namespace Msp {
 namespace Graphics {
 
-class QuartzLoader: public ImageLoader
+class MSPGUI_API QuartzLoader: public ImageLoader
 {
 private:
        struct Private;
index f7bb0ce5ea30ef1d18ade5b1149e615789d922dd..26abd6acd33b20d87158708a9992495c1efdf4f3 100644 (file)
@@ -3,6 +3,7 @@
 
 #include "display.h"
 #include "glcontext.h"
+#include "mspgui_api.h"
 #include "window.h"
 
 namespace Msp {
@@ -11,7 +12,7 @@ namespace Graphics {
 /**
 Helper class for SimpleWindow.
 */
-class SimpleWindowBase
+class MSPGUI_API SimpleWindowBase
 {
 protected:
        Display dpy;
@@ -23,7 +24,7 @@ protected:
 /**
 A simplified Window that encapsulates a Display.
 */
-class SimpleWindow: public SimpleWindowBase, public Window
+class MSPGUI_API SimpleWindow: public SimpleWindowBase, public Window
 {
 public:
        SimpleWindow(unsigned, unsigned, bool =false);
@@ -35,7 +36,7 @@ public:
 /**
 A SimpleWindow bundled with a GLContext.
 */
-class SimpleGLWindow: public SimpleWindow
+class MSPGUI_API SimpleGLWindow: public SimpleWindow
 {
 private:
        GLContext gl_ctx;
index c527ed75de9d75b2d42b45a8635f87ee7c854be9..ea69e1b8fc7dfd42545463216f33928695da6d1e 100644 (file)
@@ -2,6 +2,7 @@
 #define MSP_GRAPHICS_VIDEOMODE_H_
 
 #include <stdexcept>
+#include "mspgui_api.h"
 
 namespace Msp {
 namespace Graphics {
@@ -9,7 +10,7 @@ namespace Graphics {
 struct Monitor;
 struct VideoMode;
 
-class unsupported_video_mode: public std::runtime_error
+class MSPGUI_API unsupported_video_mode: public std::runtime_error
 {
 public:
        unsupported_video_mode(const VideoMode &);
@@ -25,7 +26,7 @@ enum VideoRotation
        ROTATE_INVERTED
 };
 
-struct VideoMode
+struct MSPGUI_API VideoMode
 {
        unsigned index = 0;
        const Monitor *monitor = nullptr;
index 211f86a8af47a305ba0c8bc7bb515aafdc3dda03..6d210e2338f293f68ed4c2b35120072b4d753a46 100644 (file)
@@ -3,6 +3,7 @@
 
 #include <stdexcept>
 #include <string>
+#include "mspgui_api.h"
 
 namespace Msp {
 namespace Graphics {
@@ -10,7 +11,7 @@ namespace Graphics {
 class Display;
 class Window;
 
-class vulkan_error: public std::runtime_error
+class MSPGUI_API vulkan_error: public std::runtime_error
 {
 public:
        vulkan_error(unsigned, const char *);
@@ -27,7 +28,7 @@ struct VulkanOptions
        bool enable_tessellation_shader = false;
 };
 
-class VulkanContext
+class MSPGUI_API VulkanContext
 {
 private:
        struct Private;
index de8a3d0beaccf79c2bc7bf9e42c3535840636fbf..a6fb92b4e8e1eb4db2f0cf46004a3a93cf92d1f6 100644 (file)
@@ -3,6 +3,7 @@
 
 #include <string>
 #include <sigc++/signal.h>
+#include "mspgui_api.h"
 
 namespace Msp {
 namespace Graphics {
@@ -23,7 +24,7 @@ struct WindowOptions
        bool resizable = false;
 };
 
-class Window
+class MSPGUI_API Window
 {
 public:
        struct Private;
index 0d71bdc3349e0dc4afedf3a5a9423528ca82977a..723e70dd4af8bd21573f55a5c675178eb8a5cfb0 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef MSP_INPUT_BINARYCONTROL_H_
 #define MSP_INPUT_BINARYCONTROL_H_
 
+#include <msp/graphics/mspgui_api.h>
 #include "control.h"
 
 namespace Msp {
@@ -11,7 +12,7 @@ A control with two possible states.  Button state is mapped directly.  An axis
 is considered to be active when its value is above a threshold (0.5 by
 default).
 */
-class BinaryControl: public Control
+class MSPGUI_API BinaryControl: public Control
 {
 public:
        sigc::signal<void> signal_press;
index 01db8108d0c2482b54055ef97e502fb123c68f66..bafd3bad97f80ecc19ecbbff2bf095f6bb60ce36 100644 (file)
@@ -2,6 +2,7 @@
 #define MSP_INPUT_BINDINGS_H_
 
 #include <msp/datafile/objectloader.h>
+#include <msp/graphics/mspgui_api.h>
 #include <msp/strings/lexicalcast.h>
 #include "control.h"
 #include "device.h"
@@ -12,10 +13,10 @@ namespace Input {
 
 class ControlScheme;
 
-class Bindings
+class MSPGUI_API Bindings
 {
 public:
-       class Loader: public DataFile::ObjectLoader<Bindings>
+       class MSPGUI_API Loader: public DataFile::ObjectLoader<Bindings>
        {
        private:
                static ActionMap shared_actions;
index f9c7003b4290ea17b8f57dfb43249b03f8489288..177776d1a4aac86dc413a5364a7e0cdd4900113c 100644 (file)
@@ -4,6 +4,7 @@
 #include <string>
 #include <sigc++/signal.h>
 #include <sigc++/trackable.h>
+#include <msp/graphics/mspgui_api.h>
 
 namespace Msp {
 namespace Input {
@@ -23,7 +24,7 @@ enum ControlSrcType
 Specifies the source of a control.  This provides a way for setting sources for
 different types of controls in a uniform way.
 */
-struct ControlSource
+struct MSPGUI_API ControlSource
 {
        Device *dev = nullptr;
        ControlSrcType type = NO_SOURCE;
@@ -48,7 +49,7 @@ active for any events to be processed.  This can be used to implement shifted
 controls (when used on a BinaryControl) or click-and-drag functionality (when
 used on a SmoothControl).
 */
-class Control: public sigc::trackable
+class MSPGUI_API Control: public sigc::trackable
 {
 public:
        sigc::signal<void> signal_capture_complete;
index d821fc56f27275127f57d295c1267f8c6570a5b6..3346bc09bc5857ff43025c4597fb574ce66da756 100644 (file)
@@ -3,13 +3,14 @@
 
 #include <map>
 #include <string>
+#include <msp/graphics/mspgui_api.h>
 
 namespace Msp {
 namespace Input {
 
 class Control;
 
-class ControlScheme
+class MSPGUI_API ControlScheme
 {
 private:
        std::map<std::string, Control *> controls;
index e80029054548fe82c0a985bb2690b23c6773021c..e7a779af3159fececfb53acc33f79ea86332500a 100644 (file)
@@ -5,12 +5,13 @@
 #include <vector>
 #include <stdexcept>
 #include <sigc++/signal.h>
+#include <msp/graphics/mspgui_api.h>
 #include <msp/strings/lexicalcast.h>
 
 namespace Msp {
 namespace Input {
 
-class device_not_available: public std::runtime_error
+class MSPGUI_API device_not_available: public std::runtime_error
 {
 public:
        device_not_available(const std::string &w): std::runtime_error(w) { }
@@ -35,7 +36,7 @@ value nominally in the range [-1, 1].
 Event handlers return a boolean indicating whether the event is considered
 processed.  If a handler returns true, no further handlers are invoked.
 */
-class Device
+class MSPGUI_API Device
 {
 protected:
        struct EventAccumulator
@@ -81,8 +82,8 @@ protected:
 };
 
 
-void operator>>(const LexicalConverter &, DeviceType &);
-void operator<<(LexicalConverter &, DeviceType);
+MSPGUI_API void operator>>(const LexicalConverter &, DeviceType &);
+MSPGUI_API void operator<<(LexicalConverter &, DeviceType);
 
 } // namespace Input
 } // namespace Msp
index baf94cb6c9e437f05422636787111c2b1d57d985..8fbaea90f7eb86e8f528834c6a55d6de2266bdb4 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef MSP_INPUT_GAMECONTROLLER_H_
 #define MSP_INPUT_GAMECONTROLLER_H_
 
+#include <msp/graphics/mspgui_api.h>
 #include <msp/io/eventdispatcher.h>
 #include <msp/time/timedelta.h>
 #include "device.h"
@@ -8,7 +9,7 @@
 namespace Msp {
 namespace Input {
 
-class GameController: public Device
+class MSPGUI_API GameController: public Device
 {
 private:
        struct Private;
index 0b31fd8c1c23aff34aad6914c0d23634566a6cdd..8804dd1abc76a073439a1dae8d8fb64bd33cc4ce 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef MSP_INPUT_GESTUREDETECTOR_H_
 #define MSP_INPUT_GESTUREDETECTOR_H_
 
+#include <msp/graphics/mspgui_api.h>
 #include "device.h"
 
 namespace Msp {
@@ -27,7 +28,7 @@ provided for each type of gesture.  Axes 0 and 1 indicate the starting position
 of the gesture; axes 2 and 3 track its progress.  The progress axis may exhibit
 absolute values greater than one.
 */
-class GestureDetector: public Device
+class MSPGUI_API GestureDetector: public Device
 {
 private:
        static constexpr size_t MAX_POINTS = 3;
@@ -71,7 +72,7 @@ private:
 };
 
 
-unsigned gesture_points(Gesture);
+MSPGUI_API unsigned gesture_points(Gesture);
 
 } // namespace Input
 } // namespace Msp
index 1abff37a18cc52cc10b6fa20db170f79a91c3a3b..aadfcd7f5b0a87752b9e623d354f29bcf0403ec5 100644 (file)
@@ -3,6 +3,7 @@
 
 #include <vector>
 #include <sigc++/trackable.h>
+#include <msp/graphics/mspgui_api.h>
 #include "device.h"
 
 namespace Msp {
@@ -12,7 +13,7 @@ namespace Input {
 The Hub device collects events from multiple input devices and presents an
 aggregate of them.  Button and axis numbers are mapped to unique values.
 */
-class Hub: public Device, public sigc::trackable
+class MSPGUI_API Hub: public Device, public sigc::trackable
 {
 protected:
        std::vector<Device *> devices;
index 30ec39c139b74d0b8f32a98cedf5dd765510c406..9048d520ece556971c57ec68b9761b3304fbe3d4 100644 (file)
@@ -2,6 +2,7 @@
 #define MSP_INPUT_KEYBOARD_H_
 
 #include <sigc++/trackable.h>
+#include <msp/graphics/mspgui_api.h>
 #include <msp/graphics/window.h>
 #include <msp/stringcodec/ustring.h>
 #include "device.h"
@@ -13,7 +14,7 @@ namespace Input {
 Adapts key events from a window to the abstracted input framework.  Key codes
 are translated to platform-independent values.  See keys.h for a list.
 */
-class Keyboard: public Device, public sigc::trackable
+class MSPGUI_API Keyboard: public Device, public sigc::trackable
 {
 public:
        sigc::signal<bool, StringCodec::unichar>::accumulated<EventAccumulator> signal_character;
index 63d0926cf48565ea806faec7593819660a8d9bda..ffa97e5e4d4e33dea3cb99c30d169a0f29d3900c 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef MSP_INPUT_KEYS_H_
 #define MSP_INPUT_KEYS_H_
 
+#include <msp/graphics/mspgui_api.h>
 #include <msp/strings/lexicalcast.h>
 
 namespace Msp {
@@ -161,12 +162,12 @@ enum MouseButton
        MOUSE_WHEEL_DOWN
 };
 
-void operator>>(const LexicalConverter &, Key &);
-void operator<<(LexicalConverter &, Key);
-void operator>>(const LexicalConverter &, MouseAxis &);
-void operator<<(LexicalConverter &, MouseAxis);
-void operator>>(const LexicalConverter &, MouseButton &);
-void operator<<(LexicalConverter &, MouseButton);
+MSPGUI_API void operator>>(const LexicalConverter &, Key &);
+MSPGUI_API void operator<<(LexicalConverter &, Key);
+MSPGUI_API void operator>>(const LexicalConverter &, MouseAxis &);
+MSPGUI_API void operator<<(LexicalConverter &, MouseAxis);
+MSPGUI_API void operator>>(const LexicalConverter &, MouseButton &);
+MSPGUI_API void operator<<(LexicalConverter &, MouseButton);
 
 } // namespace Input
 } // namespace Msp
index 647da7c44d1df448bc3607778f01a39a06da652a..0f0013c3964417ecd11b9181945c0aeb9525ad57 100644 (file)
@@ -2,6 +2,7 @@
 #define MSP_INPUT_MOUSE_H_
 
 #include <sigc++/trackable.h>
+#include <msp/graphics/mspgui_api.h>
 #include <msp/graphics/window.h>
 #include "device.h"
 
@@ -14,7 +15,7 @@ uniform way.
 
 Note: Y axis grows upwards.
 */
-class Mouse: public Device, public sigc::trackable
+class MSPGUI_API Mouse: public Device, public sigc::trackable
 {
 private:
        Graphics::Window &window;
index b5eb9aa2fd9dea6c56d81a38d40ed88755893671..16dc7e6cae73f5a737ea93f1971fcb4db0364224 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef MSP_INPUT_SMOOTHCONTROL_H_
 #define MSP_INPUT_SMOOTHCONTROL_H_
 
+#include <msp/graphics/mspgui_api.h>
 #include "control.h"
 
 namespace Msp {
@@ -14,7 +15,7 @@ Two smooth controls can also be paired to each other.  Motion on one control of
 the pair will cause negative motion on the other.  This works best when the
 controls are bound to the opposite sides of the same axis.
 */
-class SmoothControl: public Control
+class MSPGUI_API SmoothControl: public Control
 {
 public:
        sigc::signal<void, float> signal_motion;
index d366a28f9f2c33c05f04369eb0601af1d34159a8..a02fb2a841edac9271033ff920e23ac440236553 100644 (file)
@@ -2,13 +2,14 @@
 #define MSP_INPUT_TOUCHSCREEN_H_
 
 #include <sigc++/trackable.h>
+#include <msp/graphics/mspgui_api.h>
 #include <msp/graphics/window.h>
 #include "device.h"
 
 namespace Msp {
 namespace Input {
 
-class Touchscreen: public Device, public sigc::trackable
+class MSPGUI_API Touchscreen: public Device, public sigc::trackable
 {
 private:
        static constexpr unsigned UNUSED = static_cast<unsigned>(-1);