OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [start/] [insight/] [tix/] [generic/] [tixGrData.h] - Rev 1765

Compare with Previous | Blame | View Log

/*
 * tixGData.h --
 *
 *	Defines portable data structure for tixGrid.
 *
 * Copyright (c) 1996, Expert Interface Technologies
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 */
 
#ifndef _TIX_GRID_DATA_H_
#define _TIX_GRID_DATA_H_
 
/*
 * Data structure that stored the cells in a Grid widget. It is optimized
 * for column/row insertion and deletion.
 *
 * - A grid is divideded into a set of rows and columns. Each row and column
 *   is divided into a set of cells.
 *
 * - The following discusses the structure of a row. The structure of a
 *   column is the reverse of a row.
 *
 *   Row y is stored in the hash table TixGridDataSet.index[1] with
 *   the index y. Hence, to search for row y, we use the FindHashEntry
 *   operation:
 *
 *	row_y = TixGridDataSet.index[1].FindHashEntry(y);
 *
 *   To locate a cell (x,y), we can first find the row y, and then
 *   locate the cell at column x of this row. Note that the cell is
 *   *not* indexed by its column position (y), but rather by the hash
 *   table of the column y. The following example illustrates how cell
 *   (x,y) can be searched:
 *
 *	row_y = TixGridDataSet.index[1].FindHashEntry(y);
 *	col_x = TixGridDataSet.index[0].FindHashEntry(x);
 *
 *	cell_xy = row_x.list.FindHashEntry(&col_x);
 *
 *   The advantage of this arrangement is it is very efficient to
 *   insert a row into into the grid -- we just have to fix the
 *   indices of the rows table. For example, if, after the insertion,
 *   row_y is now moved to the row y1, we change its index from y to
 *   y1. In general, an insertion operation takes log(n) time in a
 *   grid that contains n items.
 *
 */
typedef struct TixGridDataSet {
    Tcl_HashTable index[2];		/* the row and column indices */
    					/* index[0] holds the columns 
					 * (horizontal index)
					 */
    int maxIdx[2];			/* the max row/col, or {-1,-1}
					 * if there are no rows/col
					 */
} TixGridDataSet;
 
#define TIX_GR_AUTO			0
#define TIX_GR_DEFAULT			1
#define TIX_GR_DEFINED_PIXEL		2
#define TIX_GR_DEFINED_CHAR		3
 
typedef struct TixGridSize {
    int sizeType;
    int sizeValue;			/* width or height */
    int pixels;
    int pad0, pad1;
    double charValue;
} TixGridSize;
 
typedef struct TixGridRowCol {
    /* private: */
    Tcl_HashTable table;
 
    /* public: */
    int dispIndex;			/* the row or column in which
					 * this TixGridRowCol is displayed */
    TixGridSize size;
} TixGridRowCol;
 
 
#endif
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.