| @@ -25,15 +25,51 @@ class Window; | |||
| // ----------------------------------------------------------------------- | |||
| /** | |||
| Base DGL Application class. | |||
| One application instance is required for creating a window. | |||
| There's no single/global application instance in DGL, and multiple | |||
| windows can share the same app instance. | |||
| In standalone mode an application will automatically quit its | |||
| event-loop when all its windows are closed. | |||
| */ | |||
| class App | |||
| { | |||
| public: | |||
| /** | |||
| Constructor. | |||
| */ | |||
| App(); | |||
| /** | |||
| Destructor. | |||
| */ | |||
| ~App(); | |||
| /** | |||
| Idle function. | |||
| This calls all this app Windows' idle functions and idle callbacks. | |||
| */ | |||
| void idle(); | |||
| /** | |||
| Run the application event-loop until all Windows are closed. | |||
| @idle() is called at regular intervals. | |||
| */ | |||
| void exec(); | |||
| /** | |||
| Quit the application. | |||
| This stops the event-loop and closes all Windows. | |||
| */ | |||
| void quit(); | |||
| /** | |||
| Check if the application is about to quit. | |||
| Returning true means there's no event-loop running at the moment. | |||
| */ | |||
| bool isQuiting() const noexcept; | |||
| private: | |||
| @@ -20,8 +20,8 @@ | |||
| #include "../distrho/extra/d_leakdetector.hpp" | |||
| // ----------------------------------------------------------------------- | |||
| // Define namespace | |||
| /* Define namespace */ | |||
| #ifndef DGL_NAMESPACE | |||
| # define DGL_NAMESPACE DGL | |||
| #endif | |||
| @@ -30,14 +30,18 @@ | |||
| #define END_NAMESPACE_DGL } | |||
| #define USE_NAMESPACE_DGL using namespace DGL_NAMESPACE; | |||
| /* GL includes */ | |||
| // ----------------------------------------------------------------------- | |||
| // OpenGL includes | |||
| #ifdef DISTRHO_OS_MAC | |||
| # include "OpenGL/gl.h" | |||
| #else | |||
| # include "GL/gl.h" | |||
| #endif | |||
| /* missing GL defines */ | |||
| // ----------------------------------------------------------------------- | |||
| // Missing OpenGL defines | |||
| #if defined(GL_BGR_EXT) && ! defined(GL_BGR) | |||
| # define GL_BGR GL_BGR_EXT | |||
| #endif | |||
| @@ -53,9 +57,10 @@ | |||
| START_NAMESPACE_DGL | |||
| // ----------------------------------------------------------------------- | |||
| // Base DGL enums | |||
| /* | |||
| * Convenience symbols for ASCII control characters. | |||
| /** | |||
| Convenience symbols for ASCII control characters. | |||
| */ | |||
| enum Char { | |||
| CHAR_BACKSPACE = 0x08, | |||
| @@ -63,8 +68,8 @@ enum Char { | |||
| CHAR_DELETE = 0x7F | |||
| }; | |||
| /* | |||
| * Special (non-Unicode) keyboard keys. | |||
| /** | |||
| Special (non-Unicode) keyboard keys. | |||
| */ | |||
| enum Key { | |||
| KEY_F1 = 1, | |||
| @@ -94,8 +99,8 @@ enum Key { | |||
| KEY_SUPER | |||
| }; | |||
| /* | |||
| * Keyboard modifier flags. | |||
| /** | |||
| Keyboard modifier flags. | |||
| */ | |||
| enum Modifier { | |||
| MODIFIER_SHIFT = 1 << 0, /**< Shift key */ | |||
| @@ -105,7 +110,11 @@ enum Modifier { | |||
| }; | |||
| // ----------------------------------------------------------------------- | |||
| // Base DGL classes | |||
| /** | |||
| Idle callback. | |||
| */ | |||
| class IdleCallback | |||
| { | |||
| public: | |||
| @@ -22,29 +22,71 @@ | |||
| START_NAMESPACE_DGL | |||
| // ----------------------------------------------------------------------- | |||
| // Forward class names | |||
| template<typename> class Line; | |||
| template<typename> class Rectangle; | |||
| // ----------------------------------------------------------------------- | |||
| // Point | |||
| template<typename T> | |||
| class Point | |||
| { | |||
| public: | |||
| /** | |||
| Constructor for (0, 0) point. | |||
| */ | |||
| Point() noexcept; | |||
| /** | |||
| Constructor using custom x and y values. | |||
| */ | |||
| Point(const T& x, const T& y) noexcept; | |||
| /** | |||
| Constructor using another Point class values. | |||
| */ | |||
| Point(const Point<T>& pos) noexcept; | |||
| /** | |||
| Get X value. | |||
| */ | |||
| const T& getX() const noexcept; | |||
| /** | |||
| Get Y value. | |||
| */ | |||
| const T& getY() const noexcept; | |||
| /** | |||
| Set X value as @a x. | |||
| */ | |||
| void setX(const T& x) noexcept; | |||
| /** | |||
| Set Y value as @a y. | |||
| */ | |||
| void setY(const T& y) noexcept; | |||
| /** | |||
| Set X and Y values as @a x and @a y respectively. | |||
| */ | |||
| void setPos(const T& x, const T& y) noexcept; | |||
| /** | |||
| Set X and Y values according to @a pos. | |||
| */ | |||
| void setPos(const Point<T>& pos) noexcept; | |||
| /** | |||
| Move this point by @a x and @a y values. | |||
| */ | |||
| void moveBy(const T& x, const T& y) noexcept; | |||
| /** | |||
| Move this point by @a pos. | |||
| */ | |||
| void moveBy(const Point<T>& pos) noexcept; | |||
| Point<T>& operator=(const Point<T>& pos) noexcept; | |||
| @@ -60,24 +102,65 @@ private: | |||
| }; | |||
| // ----------------------------------------------------------------------- | |||
| // Size | |||
| template<typename T> | |||
| class Size | |||
| { | |||
| public: | |||
| /** | |||
| Constructor for null size (0x0). | |||
| */ | |||
| Size() noexcept; | |||
| /** | |||
| Constructor using custom width and height values. | |||
| */ | |||
| Size(const T& width, const T& height) noexcept; | |||
| /** | |||
| Constructor using another Size class values. | |||
| */ | |||
| Size(const Size<T>& size) noexcept; | |||
| /** | |||
| Get width. | |||
| */ | |||
| const T& getWidth() const noexcept; | |||
| /** | |||
| Get height. | |||
| */ | |||
| const T& getHeight() const noexcept; | |||
| /** | |||
| Set width. | |||
| */ | |||
| void setWidth(const T& width) noexcept; | |||
| /** | |||
| Set height. | |||
| */ | |||
| void setHeight(const T& height) noexcept; | |||
| /** | |||
| Set size using @a width and @a height. | |||
| */ | |||
| void setSize(const T& width, const T& height) noexcept; | |||
| /** | |||
| Set size. | |||
| */ | |||
| void setSize(const Size<T>& size) noexcept; | |||
| /** | |||
| Grow size by @a multiplier. | |||
| */ | |||
| void growBy(const T& multiplier) noexcept; | |||
| /** | |||
| Shrink size by @a divider. | |||
| */ | |||
| void shrinkBy(const T& divider) noexcept; | |||
| Size<T>& operator=(const Size<T>& size) noexcept; | |||
| @@ -94,39 +177,125 @@ private: | |||
| }; | |||
| // ----------------------------------------------------------------------- | |||
| // Line | |||
| template<typename T> | |||
| class Line | |||
| { | |||
| public: | |||
| /** | |||
| Constructor for null line ([0, 0] to [0, 0]). | |||
| */ | |||
| Line() noexcept; | |||
| /** | |||
| Constructor using custom start X, start Y, end X and end Y values. | |||
| */ | |||
| Line(const T& startX, const T& startY, const T& endX, const T& endY) noexcept; | |||
| /** | |||
| Constructor using custom start X, start Y, end pos values. | |||
| */ | |||
| Line(const T& startX, const T& startY, const Point<T>& endPos) noexcept; | |||
| /** | |||
| Constructor using custom start pos, end X and end Y values. | |||
| */ | |||
| Line(const Point<T>& startPos, const T& endX, const T& endY) noexcept; | |||
| /** | |||
| Constructor using custom start and end pos values. | |||
| */ | |||
| Line(const Point<T>& startPos, const Point<T>& endPos) noexcept; | |||
| /** | |||
| Constructor using another Line class values. | |||
| */ | |||
| Line(const Line<T>& line) noexcept; | |||
| /** | |||
| Get start X value. | |||
| */ | |||
| const T& getStartX() const noexcept; | |||
| /** | |||
| Get start Y value. | |||
| */ | |||
| const T& getStartY() const noexcept; | |||
| /** | |||
| Get end X value. | |||
| */ | |||
| const T& getEndX() const noexcept; | |||
| /** | |||
| Get end Y value. | |||
| */ | |||
| const T& getEndY() const noexcept; | |||
| /** | |||
| Get start position. | |||
| */ | |||
| const Point<T>& getStartPos() const noexcept; | |||
| /** | |||
| Get end position. | |||
| */ | |||
| const Point<T>& getEndPos() const noexcept; | |||
| /** | |||
| Set start X value as @a x. | |||
| */ | |||
| void setStartX(const T& x) noexcept; | |||
| /** | |||
| Set start Y value as @a y. | |||
| */ | |||
| void setStartY(const T& y) noexcept; | |||
| /** | |||
| Set start X and Y values as @a x and @a y respectively. | |||
| */ | |||
| void setStartPos(const T& x, const T& y) noexcept; | |||
| /** | |||
| Set start X and Y values according to @a pos. | |||
| */ | |||
| void setStartPos(const Point<T>& pos) noexcept; | |||
| /** | |||
| Set end X value as @a x. | |||
| */ | |||
| void setEndX(const T& x) noexcept; | |||
| /** | |||
| Set end Y value as @a y. | |||
| */ | |||
| void setEndY(const T& y) noexcept; | |||
| /** | |||
| Set end X and Y values as @a x and @a y respectively. | |||
| */ | |||
| void setEndPos(const T& x, const T& y) noexcept; | |||
| /** | |||
| Set end X and Y values according to @a pos. | |||
| */ | |||
| void setEndPos(const Point<T>& pos) noexcept; | |||
| /** | |||
| Move this line by @a x and @a y values. | |||
| */ | |||
| void moveBy(const T& x, const T& y) noexcept; | |||
| /** | |||
| Move this line by @a pos. | |||
| */ | |||
| void moveBy(const Point<T>& pos) noexcept; | |||
| /** | |||
| Draw this line using the current OpenGL state. | |||
| */ | |||
| void draw(); | |||
| Line<T>& operator=(const Line<T>& line) noexcept; | |||
| @@ -138,47 +307,155 @@ private: | |||
| }; | |||
| // ----------------------------------------------------------------------- | |||
| // Rectangle | |||
| template<typename T> | |||
| class Rectangle | |||
| { | |||
| public: | |||
| /** | |||
| Constructor for null rectangle. | |||
| */ | |||
| Rectangle() noexcept; | |||
| /** | |||
| Constructor using custom X, Y, width and height values. | |||
| */ | |||
| Rectangle(const T& x, const T& y, const T& width, const T& height) noexcept; | |||
| /** | |||
| Constructor using custom X, Y and size values. | |||
| */ | |||
| Rectangle(const T& x, const T& y, const Size<T>& size) noexcept; | |||
| /** | |||
| Constructor using custom pos, width and height values. | |||
| */ | |||
| Rectangle(const Point<T>& pos, const T& width, const T& height) noexcept; | |||
| /** | |||
| Constructor using custom position and size. | |||
| */ | |||
| Rectangle(const Point<T>& pos, const Size<T>& size) noexcept; | |||
| /** | |||
| Constructor using another Rectangle class values. | |||
| */ | |||
| Rectangle(const Rectangle<T>& rect) noexcept; | |||
| /** | |||
| Get X value. | |||
| */ | |||
| const T& getX() const noexcept; | |||
| /** | |||
| Get Y value. | |||
| */ | |||
| const T& getY() const noexcept; | |||
| /** | |||
| Get width. | |||
| */ | |||
| const T& getWidth() const noexcept; | |||
| /** | |||
| Get height. | |||
| */ | |||
| const T& getHeight() const noexcept; | |||
| /** | |||
| Get position. | |||
| */ | |||
| const Point<T>& getPos() const noexcept; | |||
| const Size<T>& getSize() const noexcept; | |||
| /** | |||
| Get size. | |||
| */ | |||
| const Size<T>& getSize() const noexcept; | |||
| /** | |||
| Set X value as @a x. | |||
| */ | |||
| void setX(const T& x) noexcept; | |||
| /** | |||
| Set Y value as @a y. | |||
| */ | |||
| void setY(const T& y) noexcept; | |||
| /** | |||
| Set X and Y values as @a x and @a y respectively. | |||
| */ | |||
| void setPos(const T& x, const T& y) noexcept; | |||
| /** | |||
| Set X and Y values according to @a pos. | |||
| */ | |||
| void setPos(const Point<T>& pos) noexcept; | |||
| /** | |||
| Move this rectangle by @a x and @a y values. | |||
| */ | |||
| void moveBy(const T& x, const T& y) noexcept; | |||
| /** | |||
| Move this rectangle by @a pos. | |||
| */ | |||
| void moveBy(const Point<T>& pos) noexcept; | |||
| /** | |||
| Set width. | |||
| */ | |||
| void setWidth(const T& width) noexcept; | |||
| /** | |||
| Set height. | |||
| */ | |||
| void setHeight(const T& height) noexcept; | |||
| /** | |||
| Set size using @a width and @a height. | |||
| */ | |||
| void setSize(const T& width, const T& height) noexcept; | |||
| /** | |||
| Set size. | |||
| */ | |||
| void setSize(const Size<T>& size) noexcept; | |||
| /** | |||
| Grow size by @a multiplier. | |||
| */ | |||
| void growBy(const T& multiplier) noexcept; | |||
| /** | |||
| Shrink size by @a divider. | |||
| */ | |||
| void shrinkBy(const T& divider) noexcept; | |||
| /** | |||
| Check if this rectangle contains the point defined by @a X and @a Y. | |||
| */ | |||
| bool contains(const T& x, const T& y) const noexcept; | |||
| /** | |||
| Check if this rectangle contains the point @a pos. | |||
| */ | |||
| bool contains(const Point<T>& pos) const noexcept; | |||
| /** | |||
| Check if this rectangle contains X. | |||
| */ | |||
| bool containsX(const T& x) const noexcept; | |||
| /** | |||
| Check if this rectangle contains Y. | |||
| */ | |||
| bool containsY(const T& y) const noexcept; | |||
| /** | |||
| Draw this rectangle using the current OpenGL state. | |||
| */ | |||
| void draw(); | |||
| Rectangle<T>& operator=(const Rectangle<T>& rect) noexcept; | |||
| @@ -37,6 +37,9 @@ struct App::PrivateData { | |||
| ~PrivateData() | |||
| { | |||
| DISTRHO_SAFE_ASSERT(! doLoop); | |||
| DISTRHO_SAFE_ASSERT(visibleWindows == 0); | |||
| windows.clear(); | |||
| idleCallbacks.clear(); | |||
| } | |||
| @@ -139,7 +139,7 @@ void d_safe_exception(const char* const exception, const char* const file, const | |||
| // d_*sleep | |||
| static inline | |||
| void d_sleep(const uint secs) | |||
| void d_sleep(const uint secs) noexcept | |||
| { | |||
| DISTRHO_SAFE_ASSERT_RETURN(secs > 0,); | |||
| @@ -149,11 +149,11 @@ void d_sleep(const uint secs) | |||
| #else | |||
| ::sleep(secs); | |||
| #endif | |||
| } DISTRHO_SAFE_EXCEPTION("carla_sleep"); | |||
| } DISTRHO_SAFE_EXCEPTION("d_sleep"); | |||
| } | |||
| static inline | |||
| void d_msleep(const uint msecs) | |||
| void d_msleep(const uint msecs) noexcept | |||
| { | |||
| DISTRHO_SAFE_ASSERT_RETURN(msecs > 0,); | |||
| @@ -163,7 +163,7 @@ void d_msleep(const uint msecs) | |||
| #else | |||
| ::usleep(msecs * 1000); | |||
| #endif | |||
| } DISTRHO_SAFE_EXCEPTION("carla_msleep"); | |||
| } DISTRHO_SAFE_EXCEPTION("d_msleep"); | |||
| } | |||
| // ----------------------------------------------------------------------- | |||
| @@ -37,10 +37,8 @@ | |||
| # define DISTRHO_DLL_EXTENSION "dylib" | |||
| # elif defined(__HAIKU__) | |||
| # define DISTRHO_OS_HAIKU 1 | |||
| # define DISTRHO_DLL_EXTENSION "so" | |||
| # elif defined(__linux__) | |||
| # define DISTRHO_OS_LINUX 1 | |||
| # define DISTRHO_DLL_EXTENSION "so" | |||
| # endif | |||
| #endif | |||
| @@ -67,10 +65,10 @@ | |||
| #endif | |||
| /* Define DISTRHO_SAFE_ASSERT* */ | |||
| #define DISTRHO_SAFE_ASSERT(cond) if (cond) d_pass(); else d_safe_assert(#cond, __FILE__, __LINE__); | |||
| #define DISTRHO_SAFE_ASSERT_BREAK(cond) if (cond) d_pass(); else { d_safe_assert(#cond, __FILE__, __LINE__); break; } | |||
| #define DISTRHO_SAFE_ASSERT_CONTINUE(cond) if (cond) d_pass(); else { d_safe_assert(#cond, __FILE__, __LINE__); continue; } | |||
| #define DISTRHO_SAFE_ASSERT_RETURN(cond, ret) if (cond) d_pass(); else { d_safe_assert(#cond, __FILE__, __LINE__); return ret; } | |||
| #define DISTRHO_SAFE_ASSERT(cond) if (! (cond)) d_safe_assert(#cond, __FILE__, __LINE__); | |||
| #define DISTRHO_SAFE_ASSERT_BREAK(cond) if (! (cond)) { d_safe_assert(#cond, __FILE__, __LINE__); break; } | |||
| #define DISTRHO_SAFE_ASSERT_CONTINUE(cond) if (! (cond)) { d_safe_assert(#cond, __FILE__, __LINE__); continue; } | |||
| #define DISTRHO_SAFE_ASSERT_RETURN(cond, ret) if (! (cond)) { d_safe_assert(#cond, __FILE__, __LINE__); return ret; } | |||
| /* Define DISTRHO_SAFE_EXCEPTION */ | |||
| #define DISTRHO_SAFE_EXCEPTION(msg) catch(...) { d_safe_exception(msg, __FILE__, __LINE__); } | |||
| @@ -14,13 +14,9 @@ LINK_FLAGS += -L.. -ldgl $(DGL_LIBS) | |||
| # -------------------------------------------------------------- | |||
| ifeq ($(WIN32),true) | |||
| TARGETS = app.exe color.exe images.exe nekobi-ui.exe | |||
| TARGETS = dgl-app.exe dgl-color.exe dgl-images.exe | |||
| else | |||
| ifeq ($(MACOS),true) | |||
| TARGETS = app color images nekobi-ui | |||
| else | |||
| TARGETS = app cairo color images nekobi-ui | |||
| endif | |||
| TARGETS = dgl-app dgl-color dgl-images | |||
| endif | |||
| # -------------------------------------------------------------- | |||
| @@ -29,7 +25,7 @@ all: ../libdgl.a $(TARGETS) | |||
| clean: | |||
| $(MAKE) -C ../dgl clean | |||
| $(RM) *.exe app cairo color images nekobi-ui | |||
| $(RM) $(TARGETS) | |||
| debug: | |||
| $(MAKE) DEBUG=true | |||
| @@ -46,22 +42,21 @@ debug: | |||
| # -------------------------------------------------------------- | |||
| app: app.cpp ../dgl/* | |||
| dgl-app: dgl-app.cpp ../dgl/* | |||
| $(CXX) $< $(BUILD_CXX_FLAGS) $(LINK_FLAGS) -o $@ | |||
| cairo: cairo.cpp ../dgl/* | |||
| $(CXX) $< $(BUILD_CXX_FLAGS) $(shell pkg-config --cflags --libs cairo) $(LINK_FLAGS) -o $@ | |||
| color: color.cpp ../dgl/* | |||
| dgl-color: dgl-color.cpp ../dgl/* | |||
| $(CXX) $< $(BUILD_CXX_FLAGS) $(LINK_FLAGS) -o $@ | |||
| images: images.cpp images_src/* ../dgl/* | |||
| dgl-images: dgl-images.cpp dgl-images_src/* ../dgl/* | |||
| $(CXX) $< $(BUILD_CXX_FLAGS) $(LINK_FLAGS) -o $@ | |||
| nekobi-ui: nekobi-ui.cpp nekobi-ui_src/* ../dgl/* | |||
| $(CXX) $< $(BUILD_CXX_FLAGS) $(LINK_FLAGS) -o $@ | |||
| # -------------------------------------------------------------- | |||
| dgl-cairo: dgl-cairo.cpp ../dgl/* | |||
| $(CXX) $< $(BUILD_CXX_FLAGS) $(shell pkg-config --cflags --libs cairo) $(LINK_FLAGS) -o $@ | |||
| text: text.cpp ../dgl/* | |||
| dgl-text: dgl-text.cpp ../dgl/* | |||
| $(CXX) $< $(BUILD_CXX_FLAGS) $(LINK_FLAGS) -o $@ | |||
| # -------------------------------------------------------------- | |||
| @@ -1,17 +0,0 @@ | |||
| # qmake project file for app bundle test | |||
| TARGET = nekobi-ui | |||
| # ------------------------------------------------------- | |||
| CONFIG = app_bundle warn_on | |||
| TEMPLATE = app | |||
| VERSION = 1.0.0 | |||
| # ------------------------------------------------------- | |||
| INCLUDEPATH = ../../dgl | |||
| LIBS = ../../libdgl.a -framework OpenGL -framework Cocoa | |||
| SOURCES = ../nekobi-ui.cpp | |||
| # ------------------------------------------------------- | |||
| @@ -17,7 +17,7 @@ | |||
| // ------------------------------------------------------ | |||
| // Pics | |||
| #include "images_src/CatPics.cpp" | |||
| #include "dgl-images_src/CatPics.cpp" | |||
| // ------------------------------------------------------ | |||
| // DGL Stuff | |||
| @@ -1,54 +0,0 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2014 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| // ------------------------------------------------------ | |||
| // DGL StandaloneWindow | |||
| #include "StandaloneWindow.hpp" | |||
| // ------------------------------------------------------ | |||
| // include all source code here to make building easier | |||
| #include "nekobi-ui_src/DistrhoArtworkNekobi.cpp" | |||
| #include "nekobi-ui_src/DistrhoUINekobi.cpp" | |||
| // ------------------------------------------------------ | |||
| // main entry point | |||
| int main() | |||
| { | |||
| DGL::StandaloneWindow appWin; | |||
| DGL::Window& win(appWin.getWindow()); | |||
| DistrhoUINekobi gui(win); | |||
| win.setResizable(false); | |||
| win.setSize(gui.getWidth(), gui.getHeight()); | |||
| win.setTitle("DGL UI Test"); | |||
| win.show(); | |||
| DGL::App& app(appWin.getApp()); | |||
| while (! app.isQuiting()) | |||
| { | |||
| gui.idle(); | |||
| app.idle(); | |||
| d_msleep(10); | |||
| } | |||
| return 0; | |||
| } | |||
| // ------------------------------------------------------ | |||
| @@ -1,90 +0,0 @@ | |||
| /* (Auto-generated binary data file). */ | |||
| #ifndef BINARY_DISTRHOARTWORKNEKOBI_HPP | |||
| #define BINARY_DISTRHOARTWORKNEKOBI_HPP | |||
| namespace DistrhoArtworkNekobi | |||
| { | |||
| extern const char* aboutData; | |||
| const unsigned int aboutDataSize = 172710; | |||
| const unsigned int aboutWidth = 303; | |||
| const unsigned int aboutHeight = 190; | |||
| extern const char* aboutButtonHoverData; | |||
| const unsigned int aboutButtonHoverDataSize = 5888; | |||
| const unsigned int aboutButtonHoverWidth = 92; | |||
| const unsigned int aboutButtonHoverHeight = 16; | |||
| extern const char* aboutButtonNormalData; | |||
| const unsigned int aboutButtonNormalDataSize = 5888; | |||
| const unsigned int aboutButtonNormalWidth = 92; | |||
| const unsigned int aboutButtonNormalHeight = 16; | |||
| extern const char* backgroundData; | |||
| const unsigned int backgroundDataSize = 206064; | |||
| const unsigned int backgroundWidth = 636; | |||
| const unsigned int backgroundHeight = 108; | |||
| extern const char* claw1Data; | |||
| const unsigned int claw1DataSize = 4096; | |||
| const unsigned int claw1Width = 32; | |||
| const unsigned int claw1Height = 32; | |||
| extern const char* claw2Data; | |||
| const unsigned int claw2DataSize = 4096; | |||
| const unsigned int claw2Width = 32; | |||
| const unsigned int claw2Height = 32; | |||
| extern const char* knobData; | |||
| const unsigned int knobDataSize = 10000; | |||
| const unsigned int knobWidth = 50; | |||
| const unsigned int knobHeight = 50; | |||
| extern const char* run1Data; | |||
| const unsigned int run1DataSize = 4096; | |||
| const unsigned int run1Width = 32; | |||
| const unsigned int run1Height = 32; | |||
| extern const char* run2Data; | |||
| const unsigned int run2DataSize = 4096; | |||
| const unsigned int run2Width = 32; | |||
| const unsigned int run2Height = 32; | |||
| extern const char* run3Data; | |||
| const unsigned int run3DataSize = 4096; | |||
| const unsigned int run3Width = 32; | |||
| const unsigned int run3Height = 32; | |||
| extern const char* run4Data; | |||
| const unsigned int run4DataSize = 4096; | |||
| const unsigned int run4Width = 32; | |||
| const unsigned int run4Height = 32; | |||
| extern const char* scratch1Data; | |||
| const unsigned int scratch1DataSize = 4096; | |||
| const unsigned int scratch1Width = 32; | |||
| const unsigned int scratch1Height = 32; | |||
| extern const char* scratch2Data; | |||
| const unsigned int scratch2DataSize = 4096; | |||
| const unsigned int scratch2Width = 32; | |||
| const unsigned int scratch2Height = 32; | |||
| extern const char* sitData; | |||
| const unsigned int sitDataSize = 4096; | |||
| const unsigned int sitWidth = 32; | |||
| const unsigned int sitHeight = 32; | |||
| extern const char* sliderData; | |||
| const unsigned int sliderDataSize = 6084; | |||
| const unsigned int sliderWidth = 39; | |||
| const unsigned int sliderHeight = 39; | |||
| extern const char* tailData; | |||
| const unsigned int tailDataSize = 4096; | |||
| const unsigned int tailWidth = 32; | |||
| const unsigned int tailHeight = 32; | |||
| } | |||
| #endif // BINARY_DISTRHOARTWORKNEKOBI_HPP | |||
| @@ -1,142 +0,0 @@ | |||
| /* | |||
| * DISTRHO Nekobi Plugin, based on Nekobee by Sean Bolton and others. | |||
| * Copyright (C) 2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU General Public License as | |||
| * published by the Free Software Foundation; either version 2 of | |||
| * the License, or any later version. | |||
| * | |||
| * This program is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU General Public License for more details. | |||
| * | |||
| * For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||
| */ | |||
| #include "DistrhoUINekobi.hpp" | |||
| using DGL::Point; | |||
| // ----------------------------------------------------------------------- | |||
| DistrhoUINekobi::DistrhoUINekobi(DGL::Window& parent) | |||
| : DGL::Widget(parent), | |||
| fAboutWindow(this) | |||
| { | |||
| fNeko.setTimerSpeed(15); | |||
| // background | |||
| fImgBackground = Image(DistrhoArtworkNekobi::backgroundData, DistrhoArtworkNekobi::backgroundWidth, DistrhoArtworkNekobi::backgroundHeight, GL_BGR); | |||
| Image imageAbout(DistrhoArtworkNekobi::aboutData, DistrhoArtworkNekobi::aboutWidth, DistrhoArtworkNekobi::aboutHeight, GL_BGR); | |||
| fAboutWindow.setImage(imageAbout); | |||
| // slider | |||
| Image sliderImage(DistrhoArtworkNekobi::sliderData, DistrhoArtworkNekobi::sliderWidth, DistrhoArtworkNekobi::sliderHeight); | |||
| fSliderWaveform = new ImageSlider(this, sliderImage); | |||
| fSliderWaveform->setStartPos(133, 40); | |||
| fSliderWaveform->setEndPos(133, 60); | |||
| fSliderWaveform->setRange(0.0f, 1.0f); | |||
| fSliderWaveform->setValue(0.0f); | |||
| fSliderWaveform->setStep(1.0f); | |||
| // knobs | |||
| Image knobImage(DistrhoArtworkNekobi::knobData, DistrhoArtworkNekobi::knobWidth, DistrhoArtworkNekobi::knobHeight); | |||
| // knob Tuning | |||
| fKnobTuning = new ImageKnob(this, knobImage); | |||
| fKnobTuning->setPos(41, 43); | |||
| fKnobTuning->setRange(-12.0f, 12.0f); | |||
| fKnobTuning->setValue(0.0f); | |||
| fKnobTuning->setRotationAngle(305); | |||
| // knob Cutoff | |||
| fKnobCutoff = new ImageKnob(this, knobImage); | |||
| fKnobCutoff->setPos(185, 43); | |||
| fKnobCutoff->setRange(0.0f, 100.0f); | |||
| fKnobCutoff->setValue(25.0f); | |||
| fKnobCutoff->setRotationAngle(305); | |||
| // knob Resonance | |||
| fKnobResonance = new ImageKnob(this, knobImage); | |||
| fKnobResonance->setPos(257, 43); | |||
| fKnobResonance->setRange(0.0f, 95.0f); | |||
| fKnobResonance->setValue(25.0f); | |||
| fKnobResonance->setRotationAngle(305); | |||
| // knob Env Mod | |||
| fKnobEnvMod = new ImageKnob(this, knobImage); | |||
| fKnobEnvMod->setPos(329, 43); | |||
| fKnobEnvMod->setRange(0.0f, 100.0f); | |||
| fKnobEnvMod->setValue(50.0f); | |||
| fKnobEnvMod->setRotationAngle(305); | |||
| // knob Decay | |||
| fKnobDecay = new ImageKnob(this, knobImage); | |||
| fKnobDecay->setPos(400, 43); | |||
| fKnobDecay->setRange(0.0f, 100.0f); | |||
| fKnobDecay->setValue(75.0f); | |||
| fKnobDecay->setRotationAngle(305); | |||
| // knob Accent | |||
| fKnobAccent = new ImageKnob(this, knobImage); | |||
| fKnobAccent->setPos(473, 43); | |||
| fKnobAccent->setRange(0.0f, 100.0f); | |||
| fKnobAccent->setValue(25.0f); | |||
| fKnobAccent->setRotationAngle(305); | |||
| // knob Volume | |||
| fKnobVolume = new ImageKnob(this, knobImage); | |||
| fKnobVolume->setPos(545, 43); | |||
| fKnobVolume->setRange(0.0f, 100.0f); | |||
| fKnobVolume->setValue(75.0f); | |||
| fKnobVolume->setRotationAngle(305); | |||
| // about button | |||
| Image aboutImageNormal(DistrhoArtworkNekobi::aboutButtonNormalData, DistrhoArtworkNekobi::aboutButtonNormalWidth, DistrhoArtworkNekobi::aboutButtonNormalHeight); | |||
| Image aboutImageHover(DistrhoArtworkNekobi::aboutButtonHoverData, DistrhoArtworkNekobi::aboutButtonHoverWidth, DistrhoArtworkNekobi::aboutButtonHoverHeight); | |||
| fButtonAbout = new ImageButton(this, aboutImageNormal, aboutImageHover, aboutImageHover); | |||
| fButtonAbout->setPos(505, 5); | |||
| fButtonAbout->setCallback(this); | |||
| } | |||
| DistrhoUINekobi::~DistrhoUINekobi() | |||
| { | |||
| delete fSliderWaveform; | |||
| delete fKnobTuning; | |||
| delete fKnobCutoff; | |||
| delete fKnobResonance; | |||
| delete fKnobEnvMod; | |||
| delete fKnobDecay; | |||
| delete fKnobAccent; | |||
| delete fKnobVolume; | |||
| delete fButtonAbout; | |||
| } | |||
| void DistrhoUINekobi::idle() | |||
| { | |||
| if (fNeko.idle()) | |||
| repaint(); | |||
| } | |||
| // ----------------------------------------------------------------------- | |||
| // Widget Callbacks | |||
| void DistrhoUINekobi::imageButtonClicked(ImageButton* button, int) | |||
| { | |||
| if (button != fButtonAbout) | |||
| return; | |||
| fAboutWindow.exec(); | |||
| } | |||
| void DistrhoUINekobi::onDisplay() | |||
| { | |||
| fImgBackground.draw(); | |||
| fNeko.draw(); | |||
| } | |||
| // ----------------------------------------------------------------------- | |||
| @@ -1,81 +0,0 @@ | |||
| /* | |||
| * DISTRHO Nekobi Plugin, based on Nekobee by Sean Bolton and others. | |||
| * Copyright (C) 2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU General Public License as | |||
| * published by the Free Software Foundation; either version 2 of | |||
| * the License, or any later version. | |||
| * | |||
| * This program is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU General Public License for more details. | |||
| * | |||
| * For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||
| */ | |||
| #ifndef DISTRHO_UI_NEKOBI_HPP_INCLUDED | |||
| #define DISTRHO_UI_NEKOBI_HPP_INCLUDED | |||
| #include "ImageAboutWindow.hpp" | |||
| #include "ImageButton.hpp" | |||
| #include "ImageKnob.hpp" | |||
| #include "ImageSlider.hpp" | |||
| #include "DistrhoArtworkNekobi.hpp" | |||
| #include "NekoWidget.hpp" | |||
| using DGL::ImageAboutWindow; | |||
| using DGL::ImageButton; | |||
| using DGL::ImageKnob; | |||
| using DGL::ImageSlider; | |||
| // ----------------------------------------------------------------------- | |||
| class DistrhoUINekobi : public DGL::Widget, | |||
| public ImageButton::Callback | |||
| { | |||
| public: | |||
| DistrhoUINekobi(DGL::Window& parent); | |||
| ~DistrhoUINekobi() override; | |||
| unsigned int getWidth() const noexcept | |||
| { | |||
| return DistrhoArtworkNekobi::backgroundWidth; | |||
| } | |||
| unsigned int getHeight() const noexcept | |||
| { | |||
| return DistrhoArtworkNekobi::backgroundHeight; | |||
| } | |||
| void idle(); | |||
| protected: | |||
| // ------------------------------------------------------------------- | |||
| // Widget Callbacks | |||
| void imageButtonClicked(ImageButton* button, int) override; | |||
| void onDisplay() override; | |||
| private: | |||
| Image fImgBackground; | |||
| NekoWidget fNeko; | |||
| ImageKnob* fKnobTuning; | |||
| ImageKnob* fKnobCutoff; | |||
| ImageKnob* fKnobResonance; | |||
| ImageKnob* fKnobEnvMod; | |||
| ImageKnob* fKnobDecay; | |||
| ImageKnob* fKnobAccent; | |||
| ImageKnob* fKnobVolume; | |||
| ImageButton* fButtonAbout; | |||
| ImageSlider* fSliderWaveform; | |||
| ImageAboutWindow fAboutWindow; | |||
| }; | |||
| // ----------------------------------------------------------------------- | |||
| #endif // DISTRHO_UI_NEKOBI_HPP_INCLUDED | |||
| @@ -1,204 +0,0 @@ | |||
| /* | |||
| * Neko widget animation | |||
| * Copyright (C) 2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU General Public License as | |||
| * published by the Free Software Foundation; either version 2 of | |||
| * the License, or any later version. | |||
| * | |||
| * This program is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU General Public License for more details. | |||
| * | |||
| * For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||
| */ | |||
| #ifndef NEKO_WIDGET_HPP_INCLUDED | |||
| #define NEKO_WIDGET_HPP_INCLUDED | |||
| #include "Image.hpp" | |||
| #include "Widget.hpp" | |||
| #include <cstdlib> // rand | |||
| #include "DistrhoArtworkNekobi.hpp" | |||
| using DGL::Image; | |||
| USE_NAMESPACE_DGL; | |||
| // ----------------------------------------------------------------------- | |||
| class NekoWidget | |||
| { | |||
| public: | |||
| NekoWidget() | |||
| : fPos(0), | |||
| fTimer(0), | |||
| fTimerSpeed(20), | |||
| fCurAction(kActionNone), | |||
| fCurImage(&fImages.sit) | |||
| { | |||
| // load images | |||
| { | |||
| using namespace DistrhoArtworkNekobi; | |||
| #define JOIN(a, b) a ## b | |||
| #define LOAD_IMAGE(NAME) fImages.NAME.loadFromMemory(JOIN(NAME, Data), JOIN(NAME, Width), JOIN(NAME, Height)); | |||
| LOAD_IMAGE(sit) | |||
| LOAD_IMAGE(tail) | |||
| LOAD_IMAGE(claw1) | |||
| LOAD_IMAGE(claw2) | |||
| LOAD_IMAGE(scratch1) | |||
| LOAD_IMAGE(scratch2) | |||
| LOAD_IMAGE(run1) | |||
| LOAD_IMAGE(run2) | |||
| LOAD_IMAGE(run3) | |||
| LOAD_IMAGE(run4) | |||
| #undef JOIN | |||
| #undef LOAD_IMAGE | |||
| } | |||
| } | |||
| void draw() | |||
| { | |||
| int x = fPos+108; | |||
| int y = -2; | |||
| if (fCurImage == &fImages.claw1 || fCurImage == &fImages.claw2) | |||
| { | |||
| x += 2; | |||
| y += 12; | |||
| } | |||
| fCurImage->drawAt(x, y); | |||
| } | |||
| // returns true if needs repaint | |||
| bool idle() | |||
| { | |||
| if (++fTimer % fTimerSpeed != 0) // target is 20ms | |||
| return false; | |||
| if (fTimer == fTimerSpeed*9) | |||
| { | |||
| if (fCurAction == kActionNone) | |||
| fCurAction = static_cast<Action>(std::rand() % kActionCount); | |||
| else | |||
| fCurAction = kActionNone; | |||
| fTimer = 0; | |||
| } | |||
| switch (fCurAction) | |||
| { | |||
| case kActionNone: | |||
| if (fCurImage == &fImages.sit) | |||
| fCurImage = &fImages.tail; | |||
| else | |||
| fCurImage = &fImages.sit; | |||
| break; | |||
| case kActionClaw: | |||
| if (fCurImage == &fImages.claw1) | |||
| fCurImage = &fImages.claw2; | |||
| else | |||
| fCurImage = &fImages.claw1; | |||
| break; | |||
| case kActionScratch: | |||
| if (fCurImage == &fImages.scratch1) | |||
| fCurImage = &fImages.scratch2; | |||
| else | |||
| fCurImage = &fImages.scratch1; | |||
| break; | |||
| case kActionRunRight: | |||
| if (fTimer == 0 && fPos > 20*9) | |||
| { | |||
| // run the other way | |||
| --fTimer; | |||
| fCurAction = kActionRunLeft; | |||
| idle(); | |||
| break; | |||
| } | |||
| fPos += 20; | |||
| if (fCurImage == &fImages.run1) | |||
| fCurImage = &fImages.run2; | |||
| else | |||
| fCurImage = &fImages.run1; | |||
| break; | |||
| case kActionRunLeft: | |||
| if (fTimer == 0 && fPos < 20*9) | |||
| { | |||
| // run the other way | |||
| --fTimer; | |||
| fCurAction = kActionRunRight; | |||
| idle(); | |||
| break; | |||
| } | |||
| fPos -= 20; | |||
| if (fCurImage == &fImages.run3) | |||
| fCurImage = &fImages.run4; | |||
| else | |||
| fCurImage = &fImages.run3; | |||
| break; | |||
| case kActionCount: | |||
| break; | |||
| } | |||
| return true; | |||
| } | |||
| void setTimerSpeed(int speed) | |||
| { | |||
| fTimer = 0; | |||
| fTimerSpeed = speed; | |||
| } | |||
| // ------------------------------------------------------------------- | |||
| private: | |||
| enum Action { | |||
| kActionNone, // bounce tail | |||
| kActionClaw, | |||
| kActionScratch, | |||
| kActionRunRight, | |||
| kActionRunLeft, | |||
| kActionCount | |||
| }; | |||
| struct Images { | |||
| Image sit; | |||
| Image tail; | |||
| Image claw1; | |||
| Image claw2; | |||
| Image scratch1; | |||
| Image scratch2; | |||
| Image run1; | |||
| Image run2; | |||
| Image run3; | |||
| Image run4; | |||
| } fImages; | |||
| int fPos; | |||
| int fTimer; | |||
| int fTimerSpeed; | |||
| Action fCurAction; | |||
| Image* fCurImage; | |||
| }; | |||
| // ----------------------------------------------------------------------- | |||
| #endif // NEKO_WIDGET_HPP_INCLUDED | |||
| @@ -1,36 +0,0 @@ | |||
| /* ========================================================================= | |||
| * Freetype GL - A C OpenGL Freetype engine | |||
| * Platform: Any | |||
| * WWW: http://code.google.com/p/freetype-gl/ | |||
| * ------------------------------------------------------------------------- | |||
| * Copyright 2011 Nicolas P. Rougier. All rights reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright notice, | |||
| * this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in the | |||
| * documentation and/or other materials provided with the distribution. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR | |||
| * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |||
| * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | |||
| * EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |||
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| * | |||
| * The views and conclusions contained in the software and documentation are | |||
| * those of the authors and should not be interpreted as representing official | |||
| * policies, either expressed or implied, of Nicolas P. Rougier. | |||
| * ========================================================================= */ | |||
| void main() | |||
| { | |||
| gl_FragColor = gl_Color; | |||
| } | |||
| @@ -1,45 +0,0 @@ | |||
| /* ========================================================================= | |||
| * Freetype GL - A C OpenGL Freetype engine | |||
| * Platform: Any | |||
| * WWW: http://code.google.com/p/freetype-gl/ | |||
| * ------------------------------------------------------------------------- | |||
| * Copyright 2011 Nicolas P. Rougier. All rights reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright notice, | |||
| * this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in the | |||
| * documentation and/or other materials provided with the distribution. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR | |||
| * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |||
| * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | |||
| * EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |||
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| * | |||
| * The views and conclusions contained in the software and documentation are | |||
| * those of the authors and should not be interpreted as representing official | |||
| * policies, either expressed or implied, of Nicolas P. Rougier. | |||
| * ========================================================================= */ | |||
| uniform mat4 model; | |||
| uniform mat4 view; | |||
| uniform mat4 projection; | |||
| uniform vec4 Color; | |||
| attribute vec3 vertex; | |||
| attribute vec4 color; | |||
| void main() | |||
| { | |||
| gl_FrontColor = color*Color; | |||
| gl_Position = gl_ModelViewProjectionMatrix * vec4(vertex,1.0); | |||
| //gl_Position = projection*(view*(model*vec4(vertex,1.0))); | |||
| } | |||
| @@ -1,43 +0,0 @@ | |||
| /* ========================================================================= | |||
| * Freetype GL - A C OpenGL Freetype engine | |||
| * Platform: Any | |||
| * WWW: http://code.google.com/p/freetype-gl/ | |||
| * ------------------------------------------------------------------------- | |||
| * Copyright 2011 Nicolas P. Rougier. All rights reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright notice, | |||
| * this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in the | |||
| * documentation and/or other materials provided with the distribution. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR | |||
| * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |||
| * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | |||
| * EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |||
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| * | |||
| * The views and conclusions contained in the software and documentation are | |||
| * those of the authors and should not be interpreted as representing official | |||
| * policies, either expressed or implied, of Nicolas P. Rougier. | |||
| * ========================================================================= */ | |||
| uniform sampler2D texture; | |||
| void main(void) | |||
| { | |||
| vec4 color = texture2D(texture, gl_TexCoord[0].st); | |||
| float dist = color.r; | |||
| float width = fwidth(dist); | |||
| float alpha = smoothstep(0.5-width, 0.5+width, dist); | |||
| gl_FragColor = vec4(gl_Color.rgb, alpha*gl_Color.a); | |||
| } | |||
| @@ -1,47 +0,0 @@ | |||
| /* ========================================================================= | |||
| * Freetype GL - A C OpenGL Freetype engine | |||
| * Platform: Any | |||
| * WWW: http://code.google.com/p/freetype-gl/ | |||
| * ------------------------------------------------------------------------- | |||
| * Copyright 2011 Nicolas P. Rougier. All rights reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright notice, | |||
| * this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in the | |||
| * documentation and/or other materials provided with the distribution. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR | |||
| * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |||
| * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | |||
| * EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |||
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| * | |||
| * The views and conclusions contained in the software and documentation are | |||
| * those of the authors and should not be interpreted as representing official | |||
| * policies, either expressed or implied, of Nicolas P. Rougier. | |||
| * ========================================================================= */ | |||
| uniform sampler2D texture; | |||
| uniform mat4 model; | |||
| uniform mat4 view; | |||
| uniform mat4 projection; | |||
| uniform vec4 Color; | |||
| attribute vec3 vertex; | |||
| attribute vec2 tex_coord; | |||
| attribute vec4 color; | |||
| void main() | |||
| { | |||
| gl_TexCoord[0].xy = tex_coord.xy; | |||
| gl_FrontColor = color*Color; | |||
| gl_Position = projection*(view*(model*vec4(vertex,1.0))); | |||
| } | |||
| @@ -1,43 +0,0 @@ | |||
| /* ========================================================================= | |||
| * Freetype GL - A C OpenGL Freetype engine | |||
| * Platform: Any | |||
| * WWW: http://code.google.com/p/freetype-gl/ | |||
| * ------------------------------------------------------------------------- | |||
| * Copyright 2011 Nicolas P. Rougier. All rights reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright notice, | |||
| * this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in the | |||
| * documentation and/or other materials provided with the distribution. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR | |||
| * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |||
| * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | |||
| * EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |||
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| * | |||
| * The views and conclusions contained in the software and documentation are | |||
| * those of the authors and should not be interpreted as representing official | |||
| * policies, either expressed or implied, of Nicolas P. Rougier. | |||
| * ========================================================================= */ | |||
| uniform sampler2D texture; | |||
| void main(void) | |||
| { | |||
| vec3 color = vec3(0.0,0.0,0.0); | |||
| float dist = texture2D(texture, gl_TexCoord[0].st).r; | |||
| float width = fwidth(dist); | |||
| float alpha = smoothstep(0.5-width, 0.5+width, dist); | |||
| gl_FragColor = vec4(color, alpha); | |||
| } | |||
| @@ -1,70 +0,0 @@ | |||
| /* ========================================================================= | |||
| * Freetype GL - A C OpenGL Freetype engine | |||
| * Platform: Any | |||
| * WWW: http://code.google.com/p/freetype-gl/ | |||
| * ------------------------------------------------------------------------- | |||
| * Copyright 2011 Nicolas P. Rougier. All rights reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright notice, | |||
| * this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in the | |||
| * documentation and/or other materials provided with the distribution. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR | |||
| * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |||
| * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | |||
| * EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |||
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| * | |||
| * The views and conclusions contained in the software and documentation are | |||
| * those of the authors and should not be interpreted as representing official | |||
| * policies, either expressed or implied, of Nicolas P. Rougier. | |||
| * ========================================================================= */ | |||
| uniform sampler2D texture; | |||
| vec3 glyph_color = vec3(1.0,1.0,1.0); | |||
| const float glyph_center = 0.50; | |||
| vec3 outline_color = vec3(0.0,0.0,0.0); | |||
| const float outline_center = 0.55; | |||
| vec3 glow_color = vec3(1.0,1.0,1.0); | |||
| const float glow_center = 1.25; | |||
| void main(void) | |||
| { | |||
| vec4 color = texture2D(texture, gl_TexCoord[0].st); | |||
| float dist = color.r; | |||
| float width = fwidth(dist); | |||
| float alpha = smoothstep(glyph_center-width, glyph_center+width, dist); | |||
| // Smooth | |||
| // gl_FragColor = vec4(glyph_color, alpha); | |||
| // Outline | |||
| // float mu = smoothstep(outline_center-width, outline_center+width, dist); | |||
| // vec3 rgb = mix(outline_color, glyph_color, mu); | |||
| // gl_FragColor = vec4(rgb, max(alpha,mu)); | |||
| // Glow | |||
| //vec3 rgb = mix(glow_color, glyph_color, alpha); | |||
| //float mu = smoothstep(glyph_center, glow_center, sqrt(dist)); | |||
| //gl_FragColor = vec4(rgb, max(alpha,mu)); | |||
| // Glow + outline | |||
| vec3 rgb = mix(glow_color, glyph_color, alpha); | |||
| float mu = smoothstep(glyph_center, glow_center, sqrt(dist)); | |||
| color = vec4(rgb, max(alpha,mu)); | |||
| float beta = smoothstep(outline_center-width, outline_center+width, dist); | |||
| rgb = mix(outline_color, color.rgb, beta); | |||
| gl_FragColor = vec4(rgb, max(color.a,beta)); | |||
| } | |||
| @@ -1,40 +0,0 @@ | |||
| /* ========================================================================= | |||
| * Freetype GL - A C OpenGL Freetype engine | |||
| * Platform: Any | |||
| * WWW: http://code.google.com/p/freetype-gl/ | |||
| * ------------------------------------------------------------------------- | |||
| * Copyright 2011 Nicolas P. Rougier. All rights reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright notice, | |||
| * this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in the | |||
| * documentation and/or other materials provided with the distribution. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR | |||
| * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |||
| * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | |||
| * EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |||
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| * | |||
| * The views and conclusions contained in the software and documentation are | |||
| * those of the authors and should not be interpreted as representing official | |||
| * policies, either expressed or implied, of Nicolas P. Rougier. | |||
| * ========================================================================= */ | |||
| void main(void) | |||
| { | |||
| gl_FrontColor = gl_Color; | |||
| gl_TexCoord[0].xy = gl_MultiTexCoord0.xy; | |||
| gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; | |||
| } | |||
| @@ -1,152 +0,0 @@ | |||
| /* ========================================================================= | |||
| * Freetype GL - A C OpenGL Freetype engine | |||
| * Platform: Any | |||
| * WWW: http://code.google.com/p/freetype-gl/ | |||
| * ------------------------------------------------------------------------- | |||
| * Copyright 2011 Nicolas P. Rougier. All rights reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright notice, | |||
| * this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in the | |||
| * documentation and/or other materials provided with the distribution. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR | |||
| * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |||
| * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | |||
| * EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |||
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| * | |||
| * The views and conclusions contained in the software and documentation are | |||
| * those of the authors and should not be interpreted as representing official | |||
| * policies, either expressed or implied, of Nicolas P. Rougier. | |||
| * ========================================================================= */ | |||
| vec3 | |||
| energy_distribution( vec4 previous, vec4 current, vec4 next ) | |||
| { | |||
| float primary = 1.0/3.0; | |||
| float secondary = 1.0/3.0; | |||
| float tertiary = 0.0; | |||
| // Energy distribution as explained on: | |||
| // http://www.grc.com/freeandclear.htm | |||
| // | |||
| // .. v.. | |||
| // RGB RGB RGB | |||
| // previous.g + previous.b + current.r + current.g + current.b | |||
| // | |||
| // . .v. . | |||
| // RGB RGB RGB | |||
| // previous.b + current.r + current.g + current.b + next.r | |||
| // | |||
| // ..v .. | |||
| // RGB RGB RGB | |||
| // current.r + current.g + current.b + next.r + next.g | |||
| float r = | |||
| tertiary * previous.g + | |||
| secondary * previous.b + | |||
| primary * current.r + | |||
| secondary * current.g + | |||
| tertiary * current.b; | |||
| float g = | |||
| tertiary * previous.b + | |||
| secondary * current.r + | |||
| primary * current.g + | |||
| secondary * current.b + | |||
| tertiary * next.r; | |||
| float b = | |||
| tertiary * current.r + | |||
| secondary * current.g + | |||
| primary * current.b + | |||
| secondary * next.r + | |||
| tertiary * next.g; | |||
| return vec3(r,g,b); | |||
| } | |||
| uniform sampler2D texture; | |||
| uniform vec3 pixel; | |||
| varying float vgamma; | |||
| varying float vshift; | |||
| void main() | |||
| { | |||
| vec2 uv = gl_TexCoord[0].xy; | |||
| float shift = vshift; | |||
| // LCD Off | |||
| if( pixel.z == 1.0) | |||
| { | |||
| float a = texture2D(texture, uv).r; | |||
| gl_FragColor = gl_Color * pow( a, 1.0/vgamma ); | |||
| return; | |||
| } | |||
| // LCD On | |||
| vec4 current = texture2D(texture, uv); | |||
| vec4 previous= texture2D(texture, uv+vec2(-1.,0.)*pixel.xy); | |||
| vec4 next = texture2D(texture, uv+vec2(+1.,0.)*pixel.xy); | |||
| current = pow(current, vec4(1.0/vgamma)); | |||
| previous= pow(previous, vec4(1.0/vgamma)); | |||
| float r = current.r; | |||
| float g = current.g; | |||
| float b = current.b; | |||
| if( shift <= 0.333 ) | |||
| { | |||
| float z = shift/0.333; | |||
| r = mix(current.r, previous.b, z); | |||
| g = mix(current.g, current.r, z); | |||
| b = mix(current.b, current.g, z); | |||
| } | |||
| else if( shift <= 0.666 ) | |||
| { | |||
| float z = (shift-0.33)/0.333; | |||
| r = mix(previous.b, previous.g, z); | |||
| g = mix(current.r, previous.b, z); | |||
| b = mix(current.g, current.r, z); | |||
| } | |||
| else if( shift < 1.0 ) | |||
| { | |||
| float z = (shift-0.66)/0.334; | |||
| r = mix(previous.g, previous.r, z); | |||
| g = mix(previous.b, previous.g, z); | |||
| b = mix(current.r, previous.b, z); | |||
| } | |||
| float t = max(max(r,g),b); | |||
| vec4 color = vec4(gl_Color.rgb, (r+g+b)/3.0); | |||
| color = t*color + (1.0-t)*vec4(r,g,b, min(min(r,g),b)); | |||
| gl_FragColor = vec4( color.rgb, gl_Color.a*color.a); | |||
| // gl_FragColor = vec4(pow(vec3(r,g,b),vec3(1.0/vgamma)),a); | |||
| /* | |||
| vec3 color = energy_distribution(previous, vec4(r,g,b,1), next); | |||
| color = pow( color, vec3(1.0/vgamma)); | |||
| vec3 color = vec3(r,g,b); //pow( vec3(r,g,b), vec3(1.0/vgamma)); | |||
| gl_FragColor.rgb = color; //*gl_Color.rgb; | |||
| gl_FragColor.a = (color.r+color.g+color.b)/3.0 * gl_Color.a; | |||
| */ | |||
| // gl_FragColor = vec4(pow(vec3(r,g,b),vec3(1.0/vgamma)),a); | |||
| //gl_FragColor = vec4(r,g,b,a); | |||
| } | |||
| @@ -1,55 +0,0 @@ | |||
| /* ============================================================================ | |||
| * Freetype GL - A C OpenGL Freetype engine | |||
| * Platform: Any | |||
| * WWW: http://code.google.com/p/freetype-gl/ | |||
| * ---------------------------------------------------------------------------- | |||
| * Copyright 2011,2012 Nicolas P. Rougier. All rights reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright notice, | |||
| * this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in the | |||
| * documentation and/or other materials provided with the distribution. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR | |||
| * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |||
| * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | |||
| * EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |||
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| * | |||
| * The views and conclusions contained in the software and documentation are | |||
| * those of the authors and should not be interpreted as representing official | |||
| * policies, either expressed or implied, of Nicolas P. Rougier. | |||
| * ============================================================================ | |||
| */ | |||
| uniform sampler2D texture; | |||
| uniform vec3 pixel; | |||
| uniform mat4 model; | |||
| uniform mat4 view; | |||
| uniform mat4 projection; | |||
| attribute vec3 vertex; | |||
| attribute vec4 color; | |||
| attribute vec2 tex_coord; | |||
| attribute float ashift; | |||
| attribute float agamma; | |||
| varying float vshift; | |||
| varying float vgamma; | |||
| void main() | |||
| { | |||
| vshift = ashift; | |||
| vgamma = agamma; | |||
| gl_FrontColor = color; | |||
| gl_TexCoord[0].xy = tex_coord.xy; | |||
| gl_Position = projection*(view*(model*vec4(vertex,1.0))); | |||
| } | |||
| @@ -1,36 +0,0 @@ | |||
| /* ========================================================================= | |||
| * Freetype GL - A C OpenGL Freetype engine | |||
| * Platform: Any | |||
| * WWW: http://code.google.com/p/freetype-gl/ | |||
| * ------------------------------------------------------------------------- | |||
| * Copyright 2011 Nicolas P. Rougier. All rights reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright notice, | |||
| * this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in the | |||
| * documentation and/or other materials provided with the distribution. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR | |||
| * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |||
| * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | |||
| * EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |||
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| * | |||
| * The views and conclusions contained in the software and documentation are | |||
| * those of the authors and should not be interpreted as representing official | |||
| * policies, either expressed or implied, of Nicolas P. Rougier. | |||
| * ========================================================================= */ | |||
| void main() | |||
| { | |||
| gl_FragColor = gl_Color; | |||
| } | |||
| @@ -1,43 +0,0 @@ | |||
| /* ========================================================================= | |||
| * Freetype GL - A C OpenGL Freetype engine | |||
| * Platform: Any | |||
| * WWW: http://code.google.com/p/freetype-gl/ | |||
| * ------------------------------------------------------------------------- | |||
| * Copyright 2011 Nicolas P. Rougier. All rights reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright notice, | |||
| * this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in the | |||
| * documentation and/or other materials provided with the distribution. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR | |||
| * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |||
| * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | |||
| * EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |||
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| * | |||
| * The views and conclusions contained in the software and documentation are | |||
| * those of the authors and should not be interpreted as representing official | |||
| * policies, either expressed or implied, of Nicolas P. Rougier. | |||
| * ========================================================================= */ | |||
| uniform mat4 model; | |||
| uniform mat4 view; | |||
| uniform mat4 projection; | |||
| attribute vec3 vertex; | |||
| attribute vec4 color; | |||
| void main() | |||
| { | |||
| gl_FrontColor = color; | |||
| gl_Position = projection*(view*(model*vec4(vertex,1.0))); | |||
| } | |||
| @@ -1,38 +0,0 @@ | |||
| /* ========================================================================= | |||
| * Freetype GL - A C OpenGL Freetype engine | |||
| * Platform: Any | |||
| * WWW: http://code.google.com/p/freetype-gl/ | |||
| * ------------------------------------------------------------------------- | |||
| * Copyright 2011 Nicolas P. Rougier. All rights reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright notice, | |||
| * this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in the | |||
| * documentation and/or other materials provided with the distribution. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR | |||
| * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |||
| * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | |||
| * EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |||
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| * | |||
| * The views and conclusions contained in the software and documentation are | |||
| * those of the authors and should not be interpreted as representing official | |||
| * policies, either expressed or implied, of Nicolas P. Rougier. | |||
| * ========================================================================= */ | |||
| uniform sampler2D texture; | |||
| void main() | |||
| { | |||
| float a = texture2D(texture, gl_TexCoord[0].xy).r; | |||
| gl_FragColor = vec4(gl_Color.rgb, gl_Color.a*a); | |||
| } | |||
| @@ -1,45 +0,0 @@ | |||
| /* ========================================================================= | |||
| * Freetype GL - A C OpenGL Freetype engine | |||
| * Platform: Any | |||
| * WWW: http://code.google.com/p/freetype-gl/ | |||
| * ------------------------------------------------------------------------- | |||
| * Copyright 2011 Nicolas P. Rougier. All rights reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright notice, | |||
| * this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in the | |||
| * documentation and/or other materials provided with the distribution. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED BY NICOLAS P. ROUGIER ''AS IS'' AND ANY EXPRESS OR | |||
| * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |||
| * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | |||
| * EVENT SHALL NICOLAS P. ROUGIER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
| * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |||
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| * | |||
| * The views and conclusions contained in the software and documentation are | |||
| * those of the authors and should not be interpreted as representing official | |||
| * policies, either expressed or implied, of Nicolas P. Rougier. | |||
| * ========================================================================= */ | |||
| uniform mat4 model; | |||
| uniform mat4 view; | |||
| uniform mat4 projection; | |||
| attribute vec3 vertex; | |||
| attribute vec2 tex_coord; | |||
| attribute vec4 color; | |||
| void main() | |||
| { | |||
| gl_TexCoord[0].xy = tex_coord.xy; | |||
| gl_FrontColor = color; | |||
| gl_Position = projection*(view*(model*vec4(vertex,1.0))); | |||
| } | |||