From a6f052984261655b1ebe7f82bd1cbbff1449d2cd Mon Sep 17 00:00:00 2001
From: fluxgen <fluxgen>
Date: Tue, 29 Apr 2003 08:49:36 +0000
Subject: for basic draw operations

---
 src/FbTk/FbDrawable.cc | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++
 src/FbTk/FbDrawable.hh | 59 +++++++++++++++++++++++++++++++++
 2 files changed, 148 insertions(+)
 create mode 100644 src/FbTk/FbDrawable.cc
 create mode 100644 src/FbTk/FbDrawable.hh

diff --git a/src/FbTk/FbDrawable.cc b/src/FbTk/FbDrawable.cc
new file mode 100644
index 0000000..7a1cc9b
--- /dev/null
+++ b/src/FbTk/FbDrawable.cc
@@ -0,0 +1,89 @@
+// FbDrawable.cc for FbTk - Fluxbox ToolKit
+// Copyright (c) 2003 Henrik Kinnunen (fluxgen at users.sourceforge.net)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+
+// $Id: FbDrawable.cc,v 1.1 2003/04/29 08:49:36 fluxgen Exp $
+
+#include "FbDrawable.hh"
+
+#include "App.hh"
+
+namespace FbTk {
+
+void FbDrawable::copyArea(Drawable src, GC gc,
+                        int src_x, int src_y,
+                        int dest_x, int dest_y,
+                        unsigned int width, unsigned int height) {
+    if (drawable() == 0 || src == 0 || gc == 0)
+        return;
+    XCopyArea(FbTk::App::instance()->display(),
+              src, drawable(), gc,
+              src_x, src_y,
+              width, height,
+              dest_x, dest_y);
+}
+
+void FbDrawable::fillRectangle(GC gc, int x, int y,
+                             unsigned int width, unsigned int height) {
+    if (drawable() == 0 || gc == 0)
+        return;
+    XFillRectangle(FbTk::App::instance()->display(),
+                   drawable(), gc,
+                   x, y,
+                   width, height);
+}
+
+void FbDrawable::drawRectangle(GC gc, int x, int y, 
+                             unsigned int width, unsigned int height) {
+    if (drawable() == 0 || gc == 0)
+        return;
+    XDrawRectangle(FbTk::App::instance()->display(),
+                   drawable(), gc,
+                   x, y,
+                   width, height);
+}
+
+void FbDrawable::drawLine(GC gc, int start_x, int start_y, 
+                        int end_x, int end_y) {
+    if (drawable() == 0 || gc == 0)
+        return;
+    XDrawLine(FbTk::App::instance()->display(),
+              drawable(),
+              gc,
+              start_x, start_y,
+              end_x, end_y);
+}
+
+void FbDrawable::fillPolygon(GC gc, XPoint *points, int npoints,
+                           int shape, int mode) {
+    if (drawable() == 0 || gc == 0 || points == 0 || npoints == 0)
+        return;
+    XFillPolygon(FbTk::App::instance()->display(),
+                 drawable(), gc, points, npoints,
+                 shape, mode);
+}
+
+void FbDrawable::drawPoint(GC gc, int x, int y) {
+    if (drawable() == 0 || gc == 0)
+        return;    
+    XDrawPoint(FbTk::App::instance()->display(), drawable(), gc, x, y);
+}
+
+}; // end namespace FbTk
diff --git a/src/FbTk/FbDrawable.hh b/src/FbTk/FbDrawable.hh
new file mode 100644
index 0000000..8e6564e
--- /dev/null
+++ b/src/FbTk/FbDrawable.hh
@@ -0,0 +1,59 @@
+// FbDrawable.hh for FbTk - Fluxbox ToolKit
+// Copyright (c) 2003 Henrik Kinnunen (fluxgen at users.sourceforge.net)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+
+// $Id: FbDrawable.hh,v 1.1 2003/04/29 08:49:36 fluxgen Exp $
+#ifndef FBTK_FBDRAWABLE_HH
+#define FBTK_FBDRAWABLE_HH
+
+#include <X11/Xlib.h>
+
+namespace FbTk {
+
+class FbDrawable {
+public:
+    virtual ~FbDrawable() { }
+    virtual void copyArea(Drawable src, GC gc,
+                          int src_x, int src_y,
+                          int dest_x, int dest_y,
+                          unsigned int width, unsigned int height);
+
+    virtual void fillRectangle(GC gc, int x, int y,
+                               unsigned int width, unsigned int height);
+
+    virtual void drawRectangle(GC gc, int x, int y, 
+                               unsigned int width, unsigned int height);
+
+    virtual void drawLine(GC gc, int start_x, int start_y, 
+                          int end_x, int end_y);
+    virtual void fillPolygon(GC gc, XPoint *points, int npoints,
+                             int shape, int mode);
+
+    virtual void drawPoint(GC gc, int x, int y);
+
+    /// X drawable
+    virtual Drawable drawable() const = 0;
+    virtual unsigned int width() const = 0;
+    virtual unsigned int height() const = 0;
+};
+
+}; // end namespace FbTk
+
+#endif // FBTK_FBDRAWABLE_HH
-- 
cgit v0.11.2