SOL9 2.0 Sample: ColorModel

SOL9 2.0 Samples

1 Screenshot


2 Source code

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


// SOL++2000
// 2000.06.15

#include <sol\ApplicationView.h>
#include <sol\PaintDC.h>
#include <sol\ClientDC.h>
#include <sol\DIBSection.h>
#include "resource.h"

namespace SOL {

#define WM_CREATE_COLORS    (WM_USER+200)


class ColorModel :public ApplicationView {
    DIBSection colorSpace;
    int            num;

    long    createColors(Event& event) {
        ClientDC cdc(this);
        
        num = 256;
        colorSpace.create(cdc, num*2, num*2);
        colorSpace.clear();

        for (int r = 0; r<num; r++) {
            for(int g = 0; g<num; g++) {
                for(int b = 0; b<num; b++) {
                    colorSpace.setPixel(b + r,g + r, RGB(r, g, b));
                }
            }
        }
        return 0;
    }

    long paint(Event& event)
    {
        PaintDC pdc(this);
        pdc.rectangle(10, 10, 10+num*2+2, 10+num*2+2);
        colorSpace.draw(pdc, 11, 11);
        return 0;
    }

  
public:
    /**
     * Constructor
     */
    ColorModel(Application& applet, const TCHAR* label, Args& args)
        :ApplicationView(applet, label, args)
    {

        addCallback(XmNmenuCallback, IDM_EXIT, this, 
            (Callback)&ColorModel::exit, NULL);

        addEventHandler(WM_PAINT, this, 
            (Handler)&ColorModel::paint, null);
        addEventHandler(WM_CREATE_COLORS, this, 
            (Handler)&ColorModel::createColors, null);

        post(WM_CREATE_COLORS, 0, 0);
    }
};

}

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

        Args args;
        args.set(XmNwidth, 540);
        args.set(XmNheight, 580);
    
        //2009/10/11 To avoid a window flicker
        args.set(XmNclassStyle, 0);

        args.set(XmNexStyle, (ulong)WS_EX_CLIENTEDGE);
        ColorModel colorModel(applet, name, args);
        colorModel.realize();
        applet.run();
    } catch (...) {

    }
}

Last modified: 11 Nov 2009

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