SOL9 2.0 Class: GridLayout

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree 

Source code

/*
 * GridLayout.h 
 * Copyright (c) 2011 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


// SOL++2000
#pragma once

#include <sol\LayoutManager.h>
#include <sol/View.h>

namespace SOL {

class View;
//class Panel;

class GridLayout :public LayoutManager {
private:
    int        row;
    int        column;
    View**    views;
    int        count;
  
public:
    GridLayout(int row, int column) 
    {
        this-> row = 0;
        this-> column = 0;
        views = NULL;
        count = 0;
        if (row > 0 && column > 0) {
            this->row = row;
            this->column = column;
            views = new View*[row*column];
            for(int i = 0; i<row*column; i++) {
                views[i] = NULL;
            }
        }
    }

public:
    ~GridLayout()
    {
        delete [] views;
    }

public:
    virtual void add(View* view) 
    {
        if (count <row*column && view) {
            views[count++] = view;
        }
    }

public:
    virtual void layout(int x, int y, int w, int h) 
    {
        if (row > 0 && column > 0) {
            int n = 0;
            int px= 0;
            int py= 0;
            int minWidth = w/column;
            int minHeight = h/row;
            for(int i = 0; i<row; i++) {
                px = 0;
                for(int j = 0; j<column; j++) {
                    if (views[n]) {
                        views[n]->layout(px+x, py+y, minWidth, minHeight);
                        px += minWidth;
                        n++;
                    } else { 
                        break;
                    }
                }
                py += minHeight;
            }
        }
    }

};

}



Last modified: 1 Feb 2012

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