summaryrefslogtreecommitdiff
path: root/vstgui.sf/drawtest/source/pprimitivesviews.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'vstgui.sf/drawtest/source/pprimitivesviews.cpp')
-rw-r--r--vstgui.sf/drawtest/source/pprimitivesviews.cpp245
1 files changed, 245 insertions, 0 deletions
diff --git a/vstgui.sf/drawtest/source/pprimitivesviews.cpp b/vstgui.sf/drawtest/source/pprimitivesviews.cpp
new file mode 100644
index 0000000..e0e668c
--- /dev/null
+++ b/vstgui.sf/drawtest/source/pprimitivesviews.cpp
@@ -0,0 +1,245 @@
+#ifndef __pprimitivesviews__
+#include "pprimitivesviews.h"
+#endif
+
+#include <stdio.h>
+
+const CColor kBlueAlphaCColor = { 0, 0, 255, 200};
+const CColor kRedAlphaCColor = { 255, 0, 0, 200};
+const CColor kYellowAlphaCColor = { 255, 255, 0, 200};
+const CColor kGreenAlphaCColor = { 0, 255, 0, 200};
+const CColor kMagentaAlphaCColor= { 255, 0, 255, 200};
+
+PMiscView::PMiscView (const CRect& size)
+: CView (size), xOffset (0), yOffset (0)
+{
+ setTransparency (true);
+}
+
+void PMiscView::mouse (CDrawContext* pContext, CPoint &where, long buttons)
+{
+ if (pContext->waitDrag ())
+ {
+ while (pContext->getMouseButtons () == kLButton)
+ {
+ CPoint cl;
+ getMouseLocation (pContext, cl);
+ if (cl != where)
+ {
+ xOffset -= (where.x - cl.x);
+ yOffset -= (where.y - cl.y);
+ where = cl;
+ setDirty (true);
+ }
+ getFrame ()->doIdleStuff ();
+ }
+ }
+}
+
+static inline void offsetPoints (CPoint* points, long numPoints, CPoint offset)
+{
+ for (long i = 0; i < numPoints; i++)
+ points[i].offset (offset.x, offset.y);
+}
+
+void PMiscView::draw (CDrawContext* pContext)
+{
+ drawGrid (pContext);
+ CPoint polyPoints[10];
+ polyPoints[0] = CPoint (50,0);
+ polyPoints[1] = CPoint (100,50);
+ polyPoints[2] = CPoint (50,100);
+ polyPoints[3] = CPoint (0,50);
+ polyPoints[4] = CPoint (50,0);
+ offsetPoints (polyPoints, 5, CPoint (size.left + xOffset, size.top + yOffset));
+ pContext->setDrawMode (kAntialias);
+ pContext->setFrameColor (kBlackCColor);
+ pContext->drawPolygon (polyPoints, 5, kDrawStroked);
+ offsetPoints (polyPoints, 5, CPoint (50, 0));
+ pContext->setFillColor (kBlueAlphaCColor);
+ pContext->drawPolygon (polyPoints, 5, kDrawFilled);
+ offsetPoints (polyPoints, 5, CPoint (50, 0));
+ pContext->setFillColor (kRedAlphaCColor);
+ pContext->drawPolygon (polyPoints, 5, kDrawFilledAndStroked);
+
+ CRect ellipseRect (200, 0, 300, 100);
+ ellipseRect.offset (size.left + xOffset, size.top + yOffset);
+ pContext->drawEllipse (ellipseRect, kDrawStroked);
+ ellipseRect.offset (50, 0);
+ pContext->setFillColor (kBlueAlphaCColor);
+ pContext->drawEllipse (ellipseRect, kDrawFilled);
+ ellipseRect.offset (50, 0);
+ pContext->setFillColor (kRedAlphaCColor);
+ pContext->drawEllipse (ellipseRect, kDrawFilledAndStroked);
+
+ setDirty (false);
+}
+
+void PMiscView::drawGrid (CDrawContext* pContext)
+{
+ static long gridOffset = 10;
+ long x = size.left;
+ long y = size.top;
+ long numHLines = size.getWidth () / gridOffset + 1;
+ long numVLines = size.getHeight () / gridOffset + 1;
+ CPoint* points = new CPoint [numHLines*2 + numVLines*2];
+ long i;
+ for (i = 0; i < numHLines*2; i+=2, x += gridOffset)
+ {
+ points[i] = CPoint (x, size.top);
+ points[i+1] = CPoint (x, size.bottom);
+ }
+ for (i = 0; i < numVLines*2; i+=2, y += gridOffset)
+ {
+ points[numHLines*2+i] = CPoint (size.left, y);
+ points[numHLines*2+i+1] = CPoint (size.right, y);
+ }
+ pContext->setDrawMode (kCopyMode);
+ pContext->setFrameColor (kGreyCColor);
+ pContext->drawLines (points, numHLines+numVLines);
+ delete [] points;
+}
+
+PLinesView::PLinesView (const CRect& size)
+: CView (size)
+{
+ setTransparency (true);
+}
+
+void PLinesView::draw (CDrawContext *context)
+{
+ int i;
+ char text[512];
+ text[0] = 0;
+ context->setFont (kNormalFontSmall);
+ context->setFrameColor (kWhiteCColor);
+ context->setFontColor (kBlackCColor);
+ CRect r (size);
+ r.left += 10;
+ r.right -= 2;
+ r.setHeight (12);
+ context->drawString ("Normal Lines with different line widths", r);
+ context->setLineStyle (kLineSolid);
+ r.offset (0, 12);
+ for (i = 1; i <= 5; i++)
+ {
+ context->setLineWidth (i);
+ CPoint p (r.left, r.bottom - r.getHeight () / 2);
+ context->moveTo (p);
+ p.x = r.right;
+ context->lineTo (p);
+ CRect textSize (r.left-10, r.top, r.left, r.bottom);
+ sprintf (text, "%d", i);
+ context->drawString (text, textSize);
+ r.offset (0, 12);
+ }
+ context->drawString ("Dotted Lines with different line widths", r);
+ context->setLineStyle (kLineOnOffDash);
+ r.offset (0, 12);
+ for (i = 1; i <= 5; i++)
+ {
+ context->setLineWidth (i);
+ CPoint p (r.left, r.bottom - r.getHeight () / 2);
+ context->moveTo (p);
+ p.x = r.right;
+ context->lineTo (p);
+ CRect textSize (r.left-10, r.top, r.left, r.bottom);
+ sprintf (text, "%d", i);
+ context->drawString (text, textSize);
+ r.offset (0, 12);
+ }
+ context->drawString ("Normal Lines Antialiased with different line widths", r);
+ context->setLineStyle (kLineSolid);
+ context->setDrawMode (kAntialias);
+ r.offset (0, 12);
+ for (i = 1; i <= 5; i++)
+ {
+ context->setLineWidth (i);
+ CPoint p (r.left, r.bottom - r.getHeight () / 2);
+ context->moveTo (p);
+ p.x = r.right;
+ context->lineTo (p);
+ CRect textSize (r.left-10, r.top, r.left, r.bottom);
+ sprintf (text, "%d", i);
+ context->drawString (text, textSize);
+ r.offset (0, 12);
+ }
+ context->drawString ("Dotted Lines Antialiased with different line widths", r);
+ context->setLineStyle (kLineOnOffDash);
+ r.offset (0, 12);
+ for (i = 1; i <= 5; i++)
+ {
+ context->setLineWidth (i);
+ CPoint p (r.left, r.bottom - r.getHeight () / 2);
+ context->moveTo (p);
+ p.x = r.right;
+ context->lineTo (p);
+ CRect textSize (r.left-10, r.top, r.left, r.bottom);
+ sprintf (text, "%d", i);
+ context->drawString (text, textSize);
+ r.offset (0, 12);
+ }
+ context->setLineStyle (kLineSolid);
+ context->setLineWidth (1);
+ context->setDrawMode (kCopyMode);
+
+ setDirty (false);
+}
+
+PRectsView::PRectsView (const CRect& size)
+: CView (size)
+{
+ setTransparency (true);
+}
+
+void PRectsView::draw (CDrawContext *context)
+{
+ char text[512];
+ text[0] = 0;
+ context->setFont (kNormalFontSmall);
+ context->setFrameColor (kRedCColor);
+ context->setFontColor (kBlackCColor);
+ CRect r (size);
+ context->drawRect (r);
+// r.inset (1,1);
+ context->setFillColor (kWhiteCColor);
+ context->drawRect (r,kDrawFilled);
+ r.inset (2, 2);
+ context->setDrawMode (kAntialias);
+ context->drawRect (r);
+ context->setDrawMode (kCopyMode);
+ r.inset (5, 5);
+ CRect r1 (r);
+ r1.setHeight (r1.getHeight () / 2);
+ r1.setWidth (r1.getWidth () / 2);
+ CRect r2 (r1);
+ r2.inset (1, 1);
+ context->setFillColor (kBlueAlphaCColor);
+ context->drawRect (r2, kDrawFilledAndStroked);
+ r2 = r1;
+ r2.offset (r2.getWidth (), 0);
+ r2.inset (1,1);
+ context->setFillColor (kYellowAlphaCColor);
+ context->drawRect (r2, kDrawFilledAndStroked);
+ r2 = r1;
+ r2.offset (0, r2.getHeight ());
+ r2.inset (1,1);
+ context->setFillColor (kGreenAlphaCColor);
+ context->drawRect (r2, kDrawFilledAndStroked);
+ r2 = r1;
+ r2.offset (r2.getWidth (), r2.getHeight ());
+ r2.inset (1,1);
+ context->setFillColor (kMagentaAlphaCColor);
+ context->drawRect (r2, kDrawFilledAndStroked);
+
+ r2 = r;
+ r2.inset (r2.getWidth () / 4, r2.getHeight () / 4);
+ CColor alphaColor = {0, 0, 0, 130};
+ context->setFillColor (alphaColor);
+ context->fillRect (r2);
+ r2.inset (r2.getWidth () / 4, r2.getHeight () / 4);
+ CColor alpha2Color = {255, 255, 255, 130};
+ context->setFillColor (alpha2Color);
+ context->fillRect (r2);
+ setDirty (false);
+}