dmuratshin 8 years ago
parent
commit
b099a6a578
2 changed files with 27 additions and 9 deletions
  1. 26 8
      examples/Demo/src/TestRender2Texture.h
  2. 1 1
      oxygine/src/STDRenderer.cpp

+ 26 - 8
examples/Demo/src/TestRender2Texture.h

@@ -10,6 +10,8 @@ public:
     Color color;
     spSprite preview;
 
+    bool painter;
+
     TestRender2Texture()
     {
         notify("touch to draw", 100000);
@@ -18,7 +20,9 @@ public:
         spSprite back = new Sprite;
         back->setResAnim(resources.getResAnim("bg"));
         back->attachTo(content);
-        back->setPosition(content->getSize() / 2 - back->getSize() / 2);
+        back->setSize(getStage()->getSize());
+
+        back->setPosition(content->getSize() / 2 - back->getScaledSize() / 2);
 
 
 
@@ -45,35 +49,50 @@ public:
         content->addEventListener(TouchEvent::MOVE, CLOSURE(this, &TestRender2Texture::onMove));
         content->addEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this, &TestRender2Texture::onDown));
 
+
+        Test::toggle t[2];
+        t[0].text = "eraser";
+        t[1].text = "paint";
+        addToggle("mode", t, 2);
+
+        painter = true;
+    }
+
+    void toggleClicked(string id, const toggle* t) override
+    {
+        painter = !painter;
     }
 
     void onDown(Event* ev)
     {
-        color = Color(rand() % 255, rand() % 255, rand() % 255, 64);
+        color = Color(rand() % 255, rand() % 255, rand() % 255, 128);
         onMove(ev);
     }
 
     void onMove(Event* ev)
     {
         TouchEvent* te = (TouchEvent*)ev;
+
         bool left = te->getPointer()->isPressed();
         bool right = te->getPointer()->isPressed(MouseButton_Right);
+
         if (!left && !right)
             return;
 
         STDRenderer& renderer = *STDRenderer::getCurrent();
 
-
-
 #if 1
+        bool paint = painter && !right;
         renderer.begin(texture);
-        RectF destRect(te->localPosition - Vector2(30, 30), Vector2(60, 60));
+
+        Vector2 size = getStage()->getSize() / 20;
+        RectF destRect(te->localPosition - size, size * 2);
 
         ResAnim* brush = resources.getResAnim("brush");
         AnimationFrame frame = brush->getFrame(0);
         const Diffuse& df = frame.getDiffuse();
         renderer.setTexture(df.base);
-        if (left)
+        if (paint)
             renderer.setBlendMode(blend_premultiplied_alpha);
         else
         {
@@ -83,10 +102,9 @@ public:
 
         renderer.draw(color, frame.getSrcRect(), destRect);
         renderer.end();
-        if (!left)
+        if (!paint)
             oxglBlendEquation(GL_FUNC_ADD);//restore to default value
 #else
-
         renderer.begin(texture);
         spActor actor = new ManageResTest;
         actor->setScale(0.5f);

+ 1 - 1
oxygine/src/STDRenderer.cpp

@@ -450,6 +450,7 @@ namespace oxygine
     {
         _showTexel2PixelErrors = show;
     }
+#endif
 
     void STDRenderer::swapVerticesData(STDRenderer& r)
     {
@@ -460,7 +461,6 @@ namespace oxygine
     {
         std::swap(data, _vertices);
     }
-#endif
 
 
     void STDRenderer::setTexture(const spNativeTexture& base_, const spNativeTexture& alpha, bool basePremultiplied)