aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/Editor.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/Editor.h b/src/Editor.h
index 9c42e28cb..c58da4ea5 100644
--- a/src/Editor.h
+++ b/src/Editor.h
@@ -71,6 +71,38 @@ public:
};
/**
+ * A smart pointer class to ensure Surfaces are set up and deleted correctly.
+ */
+class AutoSurface {
+private:
+ Surface *surf;
+public:
+ AutoSurface(bool unicodeMode) {
+ surf = Surface::Allocate();
+ if (surf) {
+ surf->Init();
+ surf->SetUnicodeMode(unicodeMode);
+ }
+ }
+ AutoSurface(SurfaceID sid, bool unicodeMode) {
+ surf = Surface::Allocate();
+ if (surf) {
+ surf->Init(sid);
+ surf->SetUnicodeMode(unicodeMode);
+ }
+ }
+ ~AutoSurface() {
+ delete surf;
+ }
+ Surface *operator->() const {
+ return surf;
+ }
+ operator Surface *() const {
+ return surf;
+ }
+};
+
+/**
*/
class Editor : public DocWatcher {
// Private so Editor objects can not be copied