46 lines
1.9 KiB
C++
46 lines
1.9 KiB
C++
#include "Export.h"
|
|
#include "df/enabler.h"
|
|
#include "df/graphic.h"
|
|
#include "df/renderer.h"
|
|
#pragma once
|
|
|
|
namespace DFHack { namespace Renderer {
|
|
// If the the 'x' parameter points to this value, then the 'y' parameter will
|
|
// be interpreted as a boolean flag for whether to return map coordinates (false)
|
|
// or text tile coordinates (true). Only TWBT implements this logic, and this
|
|
// sentinel value can be removed once DF provides an API for retrieving the
|
|
// two sets of coordinates.
|
|
DFHACK_EXPORT extern const int32_t GET_MOUSE_COORDS_SENTINEL;
|
|
|
|
struct DFHACK_EXPORT renderer_wrap : public df::renderer {
|
|
void set_to_null();
|
|
void copy_from_parent();
|
|
void copy_to_parent();
|
|
renderer_wrap *parent;
|
|
renderer_wrap *child;
|
|
|
|
virtual void update_tile(int32_t x, int32_t y);
|
|
virtual void update_all();
|
|
virtual void render();
|
|
virtual void set_fullscreen();
|
|
virtual void zoom(df::zoom_commands z);
|
|
virtual void resize(int32_t w, int32_t h);
|
|
virtual void grid_resize(int32_t w, int32_t h);
|
|
virtual ~renderer_wrap() {
|
|
// All necessary cleanup should be handled by RemoveRenderer()
|
|
};
|
|
virtual bool get_mouse_coords(int32_t *x, int32_t *y);
|
|
virtual bool uses_opengl();
|
|
};
|
|
// Returns the renderer instance given on success, or deletes it and returns NULL on failure
|
|
// Usage: renderer_foo *r = AddRenderer(new renderer_foo)
|
|
DFHACK_EXPORT renderer_wrap *AddRenderer(renderer_wrap*, bool refresh_screen = false);
|
|
// Removes and deletes the given renderer instance
|
|
DFHACK_EXPORT void RemoveRenderer(renderer_wrap*);
|
|
DFHACK_EXPORT bool RendererExists(renderer_wrap*);
|
|
inline renderer_wrap *GetRenderer()
|
|
{
|
|
return (renderer_wrap*)(df::global::enabler ? df::global::enabler->renderer : NULL);
|
|
}
|
|
}}
|