Browse Source

Re-add some lost code

pull/1/head
falkTX 11 years ago
parent
commit
e9f40e3967
4 changed files with 76 additions and 115 deletions
  1. +1
    -1
      dpf
  2. +5
    -2
      examples/Makefile
  3. +31
    -27
      examples/demo.cpp
  4. +39
    -85
      examples/nanovg.cpp

+ 1
- 1
dpf

@@ -1 +1 @@
Subproject commit edf7cebc93c6172d45111deb7e52b5df44652ba5
Subproject commit 7936e6f1d08165407c1e1c2a6560f5cb278c3b5e

+ 5
- 2
examples/Makefile View File

@@ -18,7 +18,7 @@ WINDRES ?= windres
ifeq ($(WIN32),true) ifeq ($(WIN32),true)
TARGETS = app.exe color.exe demo.exe images.exe nanovg.exe rectangles.exe shapes.exe text.exe TARGETS = app.exe color.exe demo.exe images.exe nanovg.exe rectangles.exe shapes.exe text.exe
else else
TARGETS = app color demo images nanovg rectangles shapes text
TARGETS = app color demo images nanovg nanovg2 rectangles shapes text
endif endif


# -------------------------------------------------------------- # --------------------------------------------------------------
@@ -51,9 +51,12 @@ demo: demo.cpp widgets/* ../dpf/dgl/*
images: images.cpp widgets/ExampleImagesWidget.hpp images_res/* ../dpf/dgl/* images: images.cpp widgets/ExampleImagesWidget.hpp images_res/* ../dpf/dgl/*
$(CXX) $< $(BUILD_CXX_FLAGS) $(LINK_FLAGS) -o $@ $(CXX) $< $(BUILD_CXX_FLAGS) $(LINK_FLAGS) -o $@


nanovg: nanovg.cpp nanovg_res/* ../dpf/dgl/*
nanovg: nanovg.cpp widgets/NanoPerfWidget.hpp nanovg_res/* ../dpf/dgl/*
$(CXX) $< $(BUILD_CXX_FLAGS) -I../dpf/dgl/src/nanovg $(LINK_FLAGS) -o $@ $(CXX) $< $(BUILD_CXX_FLAGS) -I../dpf/dgl/src/nanovg $(LINK_FLAGS) -o $@


nanovg2: nanovg2.cpp widgets/NanoPerfWidget.hpp ../dpf/dgl/*
$(CXX) $< $(BUILD_CXX_FLAGS) $(LINK_FLAGS) -o $@

rectangles: rectangles.cpp widgets/ExampleRectanglesWidget.hpp ../dpf/dgl/* rectangles: rectangles.cpp widgets/ExampleRectanglesWidget.hpp ../dpf/dgl/*
$(CXX) $< $(BUILD_CXX_FLAGS) $(LINK_FLAGS) -o $@ $(CXX) $< $(BUILD_CXX_FLAGS) $(LINK_FLAGS) -o $@




+ 31
- 27
examples/demo.cpp View File

@@ -24,6 +24,7 @@
#include "widgets/ExampleRectanglesWidget.hpp" #include "widgets/ExampleRectanglesWidget.hpp"
#include "widgets/ExampleShapesWidget.hpp" #include "widgets/ExampleShapesWidget.hpp"
#include "widgets/ExampleTextWidget.hpp" #include "widgets/ExampleTextWidget.hpp"
#include "widgets/NanoPerfWidget.hpp"


// ------------------------------------------------------ // ------------------------------------------------------
// Images // Images
@@ -71,12 +72,12 @@ public:
protected: protected:
void onDisplay() override void onDisplay() override
{ {
const int iconSize = getWidth();
const int iconSize = bgIcon.getWidth();


glColor3f(0.027f, 0.027f, 0.027f); glColor3f(0.027f, 0.027f, 0.027f);
bg.draw();
Rectangle<int>(0, 0, getSize()).draw();


bgIcon.setY(curPage*iconSize + curPage + 1);
bgIcon.setY(curPage*iconSize + curPage*3);


glColor3f(0.129f, 0.129f, 0.129f); glColor3f(0.129f, 0.129f, 0.129f);
bgIcon.draw(); bgIcon.draw();
@@ -86,7 +87,7 @@ protected:


if (curHover != curPage && curHover != -1) if (curHover != curPage && curHover != -1)
{ {
Rectangle<int> rHover(1, curHover*iconSize + curHover + 1, iconSize-2, iconSize-2);
Rectangle<int> rHover(1, curHover*iconSize + curHover*3, iconSize-2, iconSize-2);


glColor3f(0.071f, 0.071f, 0.071f); glColor3f(0.071f, 0.071f, 0.071f);
rHover.draw(); rHover.draw();
@@ -105,10 +106,10 @@ protected:
const int pad = iconSize/2 - DemoArtwork::ico1Width/2; const int pad = iconSize/2 - DemoArtwork::ico1Width/2;


img1.drawAt(pad, pad); img1.drawAt(pad, pad);
img2.drawAt(pad, pad + 1 + iconSize);
img3.drawAt(pad, pad + 2 + iconSize*2);
img4.drawAt(pad, pad + 3 + iconSize*3);
//img5.drawAt(pad, pad + 3 + iconSize*3);
img2.drawAt(pad, pad + 3 + iconSize);
img3.drawAt(pad, pad + 6 + iconSize*2);
img4.drawAt(pad, pad + 9 + iconSize*3);
//img5.drawAt(pad, pad + 12 + iconSize*4);
} }


bool onMouse(const MouseEvent& ev) override bool onMouse(const MouseEvent& ev) override
@@ -118,11 +119,11 @@ protected:
if (! contains(ev.pos)) if (! contains(ev.pos))
return false; return false;


const int iconSize = getWidth();
const int iconSize = bgIcon.getWidth();


for (int i=0; i<kPageCount; ++i) for (int i=0; i<kPageCount; ++i)
{ {
bgIcon.setY(i*iconSize + i + 1);
bgIcon.setY(i*iconSize + i*3);


if (bgIcon.contains(ev.pos)) if (bgIcon.contains(ev.pos))
{ {
@@ -140,11 +141,11 @@ protected:
{ {
if (contains(ev.pos)) if (contains(ev.pos))
{ {
const int iconSize = getWidth();
const int iconSize = bgIcon.getWidth();


for (int i=0; i<kPageCount; ++i) for (int i=0; i<kPageCount; ++i)
{ {
bgIcon.setY(i*iconSize + i + 1);
bgIcon.setY(i*iconSize + i*3);


if (bgIcon.contains(ev.pos)) if (bgIcon.contains(ev.pos))
{ {
@@ -180,19 +181,17 @@ protected:
const int width = ev.size.getWidth(); const int width = ev.size.getWidth();
const int height = ev.size.getHeight(); const int height = ev.size.getHeight();


bg.setSize(ev.size);
bgIcon.setWidth(width-4);
bgIcon.setHeight(width-4);


bgIcon.setWidth(width-2);
bgIcon.setHeight(width-2);

lineSep.setStartX(width+2);
lineSep.setEndPos(width+2, height);
lineSep.setStartPos(width, 0);
lineSep.setEndPos(width, height);
} }


private: private:
Callback* const callback; Callback* const callback;
int curPage, curHover; int curPage, curHover;
Rectangle<int> bg, bgIcon;
Rectangle<int> bgIcon;
Line<int> lineSep; Line<int> lineSep;
Image img1, img2, img3, img4, img5; Image img1, img2, img3, img4, img5;
}; };
@@ -318,6 +317,7 @@ public:
wText(*this), wText(*this),
wLeft(*this, this), wLeft(*this, this),
//wRezHandle(*this), //wRezHandle(*this),
wPerf(*this, NanoPerfWidget::RENDER_FPS, "TESTING!!"),
curWidget(nullptr) curWidget(nullptr)
{ {
wColor.hide(); wColor.hide();
@@ -325,13 +325,15 @@ public:
wRects.hide(); wRects.hide();
wShapes.hide(); wShapes.hide();
wText.hide(); wText.hide();
//wPerf.hide();


wColor.setAbsoluteX(80);
wImages.setAbsoluteX(80);
wRects.setAbsoluteX(80);
wShapes.setAbsoluteX(80);
wText.setAbsoluteX(80);
wColor.setAbsoluteX(81);
wImages.setAbsoluteX(81);
wRects.setAbsoluteX(81);
wShapes.setAbsoluteX(81);
wText.setAbsoluteX(81);
wLeft.setAbsolutePos(2, 2); wLeft.setAbsolutePos(2, 2);
wPerf.setAbsoluteY(5);


setSize(600, 500); setSize(600, 500);
setTitle("DGL Demo"); setTitle("DGL Demo");
@@ -341,17 +343,19 @@ public:


void onReshape(int width, int height) override void onReshape(int width, int height) override
{ {
Size<int> size(width-80, height);
Size<int> size(width-81, height);
wColor.setSize(size); wColor.setSize(size);
wImages.setSize(size); wImages.setSize(size);
wRects.setSize(size); wRects.setSize(size);
wShapes.setSize(size); wShapes.setSize(size);
wText.setSize(size); wText.setSize(size);


wLeft.setSize(73, height-4);
wLeft.setSize(80-4, height-4);
//wRezHandle.setAbsoluteX(width-wRezHandle.getWidth()); //wRezHandle.setAbsoluteX(width-wRezHandle.getWidth());
//wRezHandle.setAbsoluteY(height-wRezHandle.getHeight()); //wRezHandle.setAbsoluteY(height-wRezHandle.getHeight());


wPerf.setAbsoluteX(width-wPerf.getWidth()-5);

Window::onReshape(width, height); Window::onReshape(width, height);
} }


@@ -378,7 +382,6 @@ protected:
case 3: case 3:
curWidget = &wShapes; curWidget = &wShapes;
break; break;
break;
case 4: case 4:
curWidget = &wText; curWidget = &wText;
break; break;
@@ -396,6 +399,7 @@ private:
ExampleTextWidget wText; ExampleTextWidget wText;
LeftSideWidget wLeft; LeftSideWidget wLeft;
//ResizeHandle wRezHandle; //ResizeHandle wRezHandle;
NanoPerfWidget wPerf;


Widget* curWidget; Widget* curWidget;
}; };


+ 39
- 85
examples/nanovg.cpp View File

@@ -22,70 +22,8 @@
// ------------------------------------------------------ // ------------------------------------------------------
// NanoVG Stuff // NanoVG Stuff


#include "NanoVG.hpp"

#include "widgets/NanoPerfWidget.hpp"
#include "nanovg_res/demo.h" #include "nanovg_res/demo.h"
#include "nanovg_res/perf.h"

// ------------------------------------------------------
// get time

#include <sys/time.h>
#include <time.h>

#ifdef DISTRHO_OS_WINDOWS
#else
struct TimePOSIX {
bool monotonic;
double resolution;
uint64_t base;

TimePOSIX()
: monotonic(false),
resolution(1e-6),
base(0)
{
#if defined(CLOCK_MONOTONIC)
struct timespec ts;

if (::clock_gettime(CLOCK_MONOTONIC, &ts) == 0)
{
monotonic = true;
resolution = 1e-9;
}
#endif

base = getRawTime();
}

uint64_t getRawTime()
{
#if defined(CLOCK_MONOTONIC)
if (monotonic)
{
struct timespec ts;

::clock_gettime(CLOCK_MONOTONIC, &ts);
return (uint64_t) ts.tv_sec * (uint64_t) 1000000000 + (uint64_t) ts.tv_nsec;
}
else
#endif
{
struct timeval tv;

::gettimeofday(&tv, NULL);
return (uint64_t) tv.tv_sec * (uint64_t) 1000000 + (uint64_t) tv.tv_usec;
}
}

double getTime()
{
return (double)(getRawTime() - base) * resolution;
}
};

static TimePOSIX gTime;
#endif


// ------------------------------------------------------ // ------------------------------------------------------
// use namespace // use namespace
@@ -102,8 +40,6 @@ int premult = 0;
int mx = 0; int mx = 0;
int my = 0; int my = 0;


double prevt = 0;

class NanoExampleWidget : public NanoWidget, class NanoExampleWidget : public NanoWidget,
public IdleCallback public IdleCallback
{ {
@@ -114,11 +50,7 @@ public:
{ {
parent.addIdleCallback(this); parent.addIdleCallback(this);


initGraph(&fPerf, GRAPH_RENDER_FPS, "Frame Time");

loadDemoData(fContext, &fData); loadDemoData(fContext, &fData);

prevt = gTime.getTime();
} }


~NanoExampleWidget() override ~NanoExampleWidget() override
@@ -143,13 +75,6 @@ protected:
const int winWidth = getWidth(); const int winWidth = getWidth();
const int winHeight = getHeight(); const int winHeight = getHeight();


double t, dt;

t = gTime.getTime();
dt = t - prevt;
prevt = t;
updateGraph(&fPerf, dt);

if (premult) if (premult)
glClearColor(0, 0, 0, 0); glClearColor(0, 0, 0, 0);
else else
@@ -157,8 +82,7 @@ protected:


glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT);


renderDemo(fContext, mx, my, winWidth, winHeight, t, blowup, &fData);
renderGraph(fContext, 5, 5, &fPerf);
renderDemo(fContext, mx, my, winWidth, winHeight, gTime.getTime(), blowup, &fData);


if (screenshot) if (screenshot)
{ {
@@ -204,7 +128,39 @@ protected:
private: private:
NVGcontext* fContext; NVGcontext* fContext;
DemoData fData; DemoData fData;
PerfGraph fPerf;

};

// -----------------------------------------------------------------------
// We need a custom window for multiple widgets

class NanoExampleWindow : public Window
{
public:
NanoExampleWindow(App& app)
: Window(app),
fDemo(*this),
fPerf(*this, NanoPerfWidget::RENDER_FPS, "Frame Time")
{
fPerf.setAbsolutePos(5, 5);
//fPerf.hide();

setSize(1000, 600);
setTitle("NanoVG");
}

protected:
void onReshape(int width, int height)
{
fDemo.setSize(width, height);
//fDemo.setAbsolutePos(10, height-fDemo.getHeight()-50);

Window::onReshape(width, height);
}

private:
NanoExampleWidget fDemo;
NanoPerfWidget fPerf;
}; };


// ------------------------------------------------------ // ------------------------------------------------------
@@ -212,12 +168,11 @@ private:


int main() int main()
{ {
StandaloneWindow swin;
NanoExampleWidget widget(swin);
App app;
NanoExampleWindow win(app);


swin.setSize(1000, 600);
swin.setTitle("NanoVG");
swin.exec();
win.show();
app.exec();


return 0; return 0;
} }
@@ -226,7 +181,6 @@ int main()


extern "C" { extern "C" {
#include "nanovg_res/demo.c" #include "nanovg_res/demo.c"
#include "nanovg_res/perf.c"
} }


// ------------------------------------------------------ // ------------------------------------------------------

Loading…
Cancel
Save