From a819ff8252cc65c7e49d41b67c9bb1c1a40f0fb2 Mon Sep 17 00:00:00 2001
From: fluxgen <fluxgen>
Date: Sun, 11 Jan 2004 20:57:53 +0000
Subject: texture tests

---
 src/tests/Makefile          |   9 +-
 src/tests/StringUtiltest.cc |   7 +-
 src/tests/test.theme        | 260 ++++++++++++++++++++++++++++++++++++++++++++
 src/tests/texturetest.cc    | 135 +++++++++++++++++++++++
 4 files changed, 406 insertions(+), 5 deletions(-)
 create mode 100644 src/tests/test.theme
 create mode 100644 src/tests/texturetest.cc

diff --git a/src/tests/Makefile b/src/tests/Makefile
index 3b4b7e7..3c6c634 100644
--- a/src/tests/Makefile
+++ b/src/tests/Makefile
@@ -5,8 +5,9 @@ XFLAGS= -I/usr/X11R6/include
 XLIBS= -L/usr/X11R6/lib -lX11 -lXft
 COMPILEFILE=$(CXX) -c $(CXXFLAGS)
 FONT_OBJ = ../FbTk/libFbTk.a
+COMPILE = ${CXX} ${CXXFLAGS} ${XLIBS}
 
-all: testStringUtil testFont
+all: testFont testTexture
 
 .cc.o:
 	$(CXX) -c $(CXXFLAGS) $<
@@ -15,7 +16,7 @@ glxtest: ../FbTk/App.hh glxtest.cc
 	${CXX} glxtest.cc ${CXXFLAGS} ${XLIBS} -lGL -lGLU -lXpm -o glxtest
 
 testStringUtil: StringUtiltest.o
-	$(CXX) $(LIBS) StringUtiltest.o -o testStringUtil
+	$(CXX) $(LIBS) StringUtiltest.o ../FbTk/libFbTk.a -o testStringUtil
 
 testKeys:  testKeys.o
 	$(CXX) $(LIBS) $(XLIBS) testKeys.o -o testKeys
@@ -38,6 +39,10 @@ testTransp: transpTest.cc
 testScale: scaleTest.cc
 	${CXX} ${CXXFLAGS} ${XLIBS} scaleTest.cc ../FbTk/libFbTk.a -lXpm -o testScale
 
+testTexture: texturetest.cc
+	${COMPILE} texturetest.cc ../FbTk/libFbTk.a -lXpm -o testTexture
+
+
 run: testLayers testResource testKeys testStringUtil testFont
 	./testLayers
 	./testKeys
diff --git a/src/tests/StringUtiltest.cc b/src/tests/StringUtiltest.cc
index 8d8f206..7c2e2d8 100644
--- a/src/tests/StringUtiltest.cc
+++ b/src/tests/StringUtiltest.cc
@@ -1,5 +1,5 @@
 // StringUtiltest.cc
-// Copyright (c) 2001 - 2002 Henrik Kinnunen (fluxgen@linuxmail.org)
+// Copyright (c) 2001 - 2004 Henrik Kinnunen (fluxgen@linuxmail.org)
 //
 // Permission is hereby granted, free of charge, to any person obtaining a
 // copy of this software and associated documentation files (the "Software"),
@@ -13,13 +13,13 @@
 //
 // 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
+// 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.
 
-#include "../StringUtil.hh"
+#include "StringUtil.hh"
 #ifndef _GNU_SOURCE
 #define _GNU_SOURCE
 #endif //_GNU_SOURCE
@@ -36,6 +36,7 @@ uds::uds_flags_t uds::flags = uds::leak_check|uds::log_allocs;
 #endif
 
 using namespace std;
+using namespace FbTk;
 
 void testStringtok() {	
     vector<string> ls;
diff --git a/src/tests/test.theme b/src/tests/test.theme
new file mode 100644
index 0000000..e73e818
--- /dev/null
+++ b/src/tests/test.theme
@@ -0,0 +1,260 @@
+texture0: Flat Solid
+texture0.color: blue
+
+texture1: Gradient Vertical
+texture1.color: blue
+texture1.colorTo: green
+
+texture2: Gradient Horizontal
+texture2.color: blue
+texture2.colorTo: green
+
+texture3: Gradient Diagonal
+texture3.color: blue
+texture3.colorTo: green
+
+texture4: Gradient CrossDiagonal
+texture4.color: blue
+texture4.colorTo: green
+
+texture5: Gradient Rectangle
+texture5.color: blue
+texture5.colorTo: green
+
+texture6: Gradient Pyramid
+texture6.color: blue
+texture6.colorTo: green
+
+texture7: Gradient PipeCross
+texture7.color: blue
+texture7.colorTo: green
+
+texture8: Gradient Elliptic
+texture8.color: blue
+texture8.colorTo: green
+
+--- new line
+
+texture9: Flat Solid sunken
+texture9.color: blue
+texture9.colorTo: green
+
+texture10: Gradient Vertical sunken
+texture10.color: blue
+texture10.colorTo: green
+
+texture11: Gradient Horizontal sunken
+texture11.color: blue
+texture11.colorTo: green
+
+texture12: Gradient Diagonal sunken
+texture12.color: blue
+texture12.colorTo: green
+
+texture13: Gradient CrossDiagonal sunken
+texture13.color: blue
+texture13.colorTo: green
+
+texture14: Gradient Rectangle sunken
+texture14.color: blue
+texture14.colorTo: green
+
+texture15: Gradient Pyramid sunken
+texture15.color: blue
+texture15.colorTo: green
+
+texture16: Gradient PipeCross sunken
+texture16.color: blue
+texture16.colorTo: green
+
+texture17: Gradient Elliptic sunken
+texture17.color: blue
+texture17.colorTo: green
+
+--- new line
+texture18: Flat Solid raised
+texture18.color: blue
+texture18.colorTo: green
+
+texture19: Gradient Vertical raised
+texture19.color: blue
+texture19.colorTo: green
+
+texture20: Gradient Horizontal raised
+texture20.color: blue
+texture20.colorTo: green
+
+texture21: Gradient Diagonal raised
+texture21.color: blue
+texture21.colorTo: green
+
+texture22: Gradient CrossDiagonal raised
+texture22.color: blue
+texture22.colorTo: green
+
+texture23: Gradient Rectangle raised
+texture23.color: blue
+texture23.colorTo: green
+
+texture24: Gradient Pyramid raised
+texture24.color: blue
+texture24.colorTo: green
+
+texture25: Gradient PipeCross raised
+texture25.color: blue
+texture25.colorTo: green
+
+texture26: Gradient Elliptic raised
+texture26.color: blue
+texture26.colorTo: green
+
+--- new line
+
+texture27: Flat Solid invert
+texture27.color: blue
+texture27.colorTo: green
+
+texture28: Gradient Vertical invert
+texture28.color: blue
+texture28.colorTo: green
+
+texture29: Gradient Horizontal invert
+texture29.color: blue
+texture29.colorTo: green
+
+texture30: Gradient Diagonal invert
+texture30.color: blue
+texture30.colorTo: green
+
+texture31: Gradient CrossDiagonal invert
+texture31.color: blue
+texture31.colorTo: green
+
+texture32: Gradient Rectangle invert
+texture32.color: blue
+texture32.colorTo: green
+
+texture33: Gradient Pyramid invert
+texture33.color: blue
+texture33.colorTo: green
+
+texture34: Gradient PipeCross invert
+texture34.color: blue
+texture34.colorTo: green
+
+texture35: Gradient Elliptic invert
+texture35.color: blue
+texture35.colorTo: green
+
+--- new line
+texture36: Flat Solid interlaced
+texture36.color: blue
+texture36.colorTo: green
+
+texture37: Gradient Vertical interlaced
+texture37.color: blue
+texture37.colorTo: green
+
+texture38: Gradient Horizontal interlaced
+texture38.color: blue
+texture38.colorTo: green
+
+texture39: Gradient Diagonal interlaced
+texture39.color: blue
+texture39.colorTo: green
+
+texture40: Gradient CrossDiagonal interlaced
+texture40.color: blue
+texture40.colorTo: green
+
+texture41: Gradient Rectangle interlaced
+texture41.color: blue
+texture41.colorTo: green
+
+texture42: Gradient Pyramid interlaced
+texture42.color: blue
+texture42.colorTo: green
+
+texture43: Gradient PipeCross interlaced
+texture43.color: blue
+texture43.colorTo: green
+
+texture44: Gradient Elliptic interlaced
+texture44.color: blue
+texture44.colorTo: green
+
+
+--- new line
+texture45: Flat Solid bevel1
+texture45.color: blue
+texture45.colorTo: green
+
+texture46: Gradient Vertical bevel1
+texture46.color: blue
+texture46.colorTo: green
+
+texture47: Gradient Horizontal bevel1
+texture47.color: blue
+texture47.colorTo: green
+
+texture48: Gradient Diagonal bevel1
+texture48.color: blue
+texture48.colorTo: green
+
+texture49: Gradient CrossDiagonal bevel1
+texture49.color: blue
+texture49.colorTo: green
+
+texture50: Gradient Rectangle bevel1
+texture50.color: blue
+texture50.colorTo: green
+
+texture51: Gradient Pyramid bevel1
+texture51.color: blue
+texture51.colorTo: green
+
+texture52: Gradient PipeCross bevel1
+texture52.color: blue
+texture52.colorTo: green
+
+texture53: Gradient Elliptic bevel1
+texture53.color: blue
+texture53.colorTo: green
+
+
+--- new line
+texture54: Flat Solid bevel2
+texture54.color: blue
+texture54.colorTo: green
+
+texture55: Gradient Vertical bevel2
+texture55.color: blue
+texture55.colorTo: green
+
+texture56: Gradient Horizontal bevel2
+texture56.color: blue
+texture56.colorTo: green
+
+texture57: Gradient Diagonal bevel2
+texture57.color: blue
+texture57.colorTo: green
+
+texture58: Gradient CrossDiagonal bevel2
+texture58.color: blue
+texture58.colorTo: green
+
+texture59: Gradient Rectangle bevel2
+texture59.color: blue
+texture59.colorTo: green
+
+texture60: Gradient Pyramid bevel2
+texture60.color: blue
+texture60.colorTo: green
+
+texture61: Gradient PipeCross bevel2
+texture61.color: blue
+texture61.colorTo: green
+
+texture62: Gradient Elliptic bevel2
+texture62.color: blue
+texture62.colorTo: green
diff --git a/src/tests/texturetest.cc b/src/tests/texturetest.cc
new file mode 100644
index 0000000..0ba6741
--- /dev/null
+++ b/src/tests/texturetest.cc
@@ -0,0 +1,135 @@
+#include "ImageControl.hh"
+#include "Color.hh"
+#include "GContext.hh"
+#include "FbPixmap.hh"
+#include "Texture.hh"
+#include "FbWindow.hh"
+#include "EventHandler.hh"
+#include "EventManager.hh"
+#include "Theme.hh"
+#include "Font.hh"
+#include "App.hh"
+
+#include <memory>
+#include <iostream>
+#include <string>
+
+using namespace std;
+using namespace FbTk;
+
+class TestTheme: public Theme {
+public:
+    TestTheme(int screen):Theme(screen) { }
+    bool fallback(ThemeItem_base &item) { return false; }
+    void reconfigTheme() { } 
+};
+
+class Application: public FbTk::FbWindow, public FbTk::EventHandler {
+public:
+    Application(int box_size, int num):
+        FbWindow(0,  0, 0, 640, box_size*num/8 - 3*5, ExposureMask | KeyPressMask),
+        m_box_size(box_size),
+        m_num(num),
+        m_font("fixed"),
+        m_imgctrl(screenNumber(), true, 8,
+                  100, 100),
+        m_background(*this, 640, 480, depth()),
+        m_gc(m_background) {
+        setName("Texture Test");
+        setBackgroundPixmap(m_background.drawable());
+
+        FbTk::EventManager::instance()->add(*this, *this);
+
+        renderPixmaps();
+
+        show();        
+    }
+    void keyPressEvent(XKeyEvent &ev) {
+        App::instance()->end();
+    }
+    void exposeEvent(XExposeEvent &ev) {
+        clear();
+    }
+
+private:
+
+    void renderPixmap(const Texture &text, int x, int y) {
+        Pixmap pm = m_imgctrl.renderImage(m_box_size, m_box_size,
+                                          text);
+
+        m_background.copyArea(pm, m_gc.gc(),
+                              0, 0,
+                              x, y,
+                              m_box_size, m_box_size);
+        m_imgctrl.removeImage(pm);
+    }
+
+    void renderPixmaps() {
+
+        m_gc.setForeground(Color("gray", screenNumber()));
+
+        m_background.fillRectangle(m_gc.gc(),
+                                   0, 0,
+                                   width(), height());
+        // for text color
+        m_gc.setForeground(Color("black", screenNumber()));
+
+        const int step_size = m_box_size + 5;
+        int next_x = 5;
+        int next_y = 5;
+
+        TestTheme tm(screenNumber());
+        std::auto_ptr<ThemeItem<Texture> > text;
+        char value[18];
+        for (int i=0; i<m_num; ++i) {
+            sprintf(value, "%d", i);
+            text.reset(new ThemeItem<Texture>
+                       (tm, 
+                        string("texture") + value, 
+                        string("Texture") + value));
+            cerr<<"Theme: "<<text->name()<<endl;
+            // load new style
+            ThemeManager::instance().load("test.theme");
+
+            renderPixmap(**text.get(), next_x, next_y);
+
+            next_x += step_size;
+            if (next_x + m_box_size > width()) {
+                m_font.drawText(m_background.drawable(),
+                                screenNumber(),
+                                m_gc.gc(),
+                                value, strlen(value),
+                                next_x, next_y + m_box_size/2);
+                next_x = 5;
+                next_y += step_size;
+            }
+
+        }
+
+
+    }
+
+
+    const int m_box_size;
+    const int m_num;
+    FbTk::Font m_font;
+    ImageControl m_imgctrl;
+    FbPixmap m_background;
+    FbTk::GContext m_gc;
+};
+
+int main(int argc, char **argv) {
+    int boxsize= 60;
+    int num = 63;
+    for (int i=1; i<argc; ++i) {
+        if (strcmp(argv[i], "-boxsize") == 0 && i + 1 < argc)
+            boxsize = atoi(argv[++i]);
+        else if (strcmp(argv[i], "-num") == 0 && i + 1 < argc)
+            num = atoi(argv[++i]);
+     }
+    App realapp;
+    Application app(boxsize, num);
+
+    realapp.eventLoop();
+
+}
-- 
cgit v0.11.2