SOL9 2.0 Sample: Canvas

SOL9 2.0 Samples

1 Screenshot


2 Source code

/*
 * Canvas.cpp 
 * Copyright (c) 2009 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


// SOL++2000
// 2000.02.18


#include <sol\ApplicationView.h>
#include <sol\PaintDC.h>
#include <sol\DrawingArea.h>
#include <sol\Stdio.h>

namespace SOL {

class CanvasView :public ApplicationView {
private:

    DrawingArea area1;
    DrawingArea area2;


public:
    /**
     * Constructor
     */
    CanvasView(Application& applet, const TCHAR* label, Args& args)
    :ApplicationView(applet, label, args)
    {
        Args ar;
        ar.set(XmNclassStyle, 0);

        ar.set(XmNenableThumbTrack, TRUE);
        ar.set(XmNexStyle, WS_EX_CLIENTEDGE);
        ar.set(XmNstyle, (ulong)WS_BORDER|WS_VSCROLL|WS_HSCROLL);
        area1.create(this, _T(""), ar);

        ar.reset();
        ar.set(XmNclassStyle, 0);

        ar.set(XmNexStyle, WS_EX_CLIENTEDGE);

        ar.set(XmNstyle, (ulong)WS_BORDER|WS_VSCROLL|WS_HSCROLL);
        area2.create(this, _T(""), ar);

        area1.addCallback(XmNexposeCallback, this, 
            (Callback)&CanvasView::draw1, 
            _T("This is a drawingArea1. Hello world."));
        area2.addCallback(XmNexposeCallback, this, 
            (Callback)&CanvasView::draw2, 
            _T("This is a drawingArea2. Goodbye world."));
    }

private:

    long size(Event& event)
    {
        int w, h;
        event.getSize(w, h);
        area1.reshape(0, 0, w, h/2-1);
        area2.reshape(0, h/2+1, w, h/2-2);
        return 0L;
    }

private:
    void draw1(Action& action)
    {
        PaintDC* pdc = (PaintDC*)action.getValue();
        TCHAR* text = (TCHAR*)action.getData();

        int x = (int)area1.get(XmNhorizThumbPosition);
        int y = (int)area1.get(XmNvertThumbPosition);
        pdc -> textOut(-x+10, -y+10, text, strlen(text));
    }

private:
    void CanvasView::draw2(Action& action)
    {
        PaintDC* pdc = (PaintDC*)action.getValue();
        TCHAR* text = (TCHAR*)action.getData();
        int x = (int)area2.get(XmNhorizThumbPosition);
        int y = (int)area2.get(XmNvertThumbPosition);
        pdc -> textOut(-x+40, -y+40, text, strlen(text));
    }
};

}

//
//
void    Main(int argc, TCHAR** argv)
{
    const TCHAR* name = _T("Canvas");
    Application applet(name, argc, argv);

    Args args;
        args.set(XmNclassStyle, 0);

    args.set(XmNwidth,  400);
    args.set(XmNheight, 400);
    CanvasView canvas(applet, name, args);
    canvas.realize();

    applet.run();
}


Last modified: 11 Nov 2009

Copyright (c) 2009 Antillia.com ALL RIGHTS RESERVED.