| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- // ================================================================================
- // == This file is a part of Turbo Badger. (C) 2011-2014, Emil Segerås ==
- // == See tb_core.h for more information. ==
- // ================================================================================
- #ifndef TB_SYSTEM_H
- #define TB_SYSTEM_H
- #include "tb_core.h"
- #include "tb_str.h"
- #ifdef TB_RUNTIME_DEBUG_INFO
- void TBDebugOut(const char *str);
- #define TBDebugPrint(str, ...) { tb::TBStr tmp; tmp.SetFormatted(str, __VA_ARGS__); TBDebugOut(tmp); }
- #else
- #define TBDebugOut(str) ((void)0)
- #define TBDebugPrint(str, ...) ((void)0)
- #endif
- namespace tb {
- // == Platform interface ===================================================
- /** TBSystem is porting interface for the underlaying OS. */
- class TBSystem
- {
- public:
- /** Get the system time in milliseconds since some undefined epoch. */
- static double GetTimeMS();
- /** Called when the need to call TBMessageHandler::ProcessMessages has changed due to changes in the
- message queue. fire_time is the new time is needs to be called.
- It may be 0 which means that ProcessMessages should be called asap (but NOT from this call!)
- It may also be TB_NOT_SOON which means that ProcessMessages doesn't need to be called. */
- static void RescheduleTimer(double fire_time);
- /** Get how many milliseconds it should take after a touch down event should generate a long click
- event. */
- static int GetLongClickDelayMS();
- /** Get how many pixels of dragging should start panning scrollable widgets. */
- static int GetPanThreshold();
- /** Get how many pixels a typical line is: The length that should be scrolled when turning a mouse
- wheel one notch. */
- static int GetPixelsPerLine();
- /** Get Dots Per Inch for the main screen. */
- static int GetDPI();
- };
- /** TBClipboard is a porting interface for the clipboard. */
- class TBClipboard
- {
- public:
- /** Empty the contents of the clipboard. */
- static void Empty();
- /** Return true if the clipboard currently contains text. */
- static bool HasText();
- /** Set the text of the clipboard in UTF-8 format. */
- static bool SetText(const char *text);
- /** Get the text from the clipboard in UTF-8 format.
- Returns true on success. */
- static bool GetText(TBStr &text);
- };
- typedef void (*TBFileExternalReaderFunction)(const char* filename, void** data, unsigned* length);
- /** TBFile is a porting interface for file access. */
- class TBFile
- {
- static TBFileExternalReaderFunction reader_function;
- public:
- enum TBFileMode { MODE_READ };
- static TBFile *Open(const char *filename, TBFileMode mode);
- static void SetReaderFunction(TBFileExternalReaderFunction function) { reader_function = function; }
- virtual ~TBFile() {}
- virtual long Size() = 0;
- virtual size_t Read(void *buf, size_t elemSize, size_t count) = 0;
- };
- }; // namespace tb
- #endif // TB_SYSTEM_H
|