emview_component.h from EmStar at Krugle
Show emview_component.h syntax highlighted
/*
*
* Copyright (c) 2003 The Regents of the University of California. All
* rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Neither the name of the University nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef __EMVIEW_COMPONENT_H__
#define __EMVIEW_COMPONENT_H__
typedef struct current_display current_display_t;
typedef struct component {
GQuark name;
emview_component_type_t type;
int override:1; /* if set, vis overrides default */
int visible:1; /* visible setting if override */
int active:1; /* component is active */
int referenced:1; /* component is referenced */
int mark:1; /* mark for pruning */
int px, py, w, h; /* pixel coords bounding box */
GtkWidget *menu; /* for global, the component menu item */
current_display_t *disp; /* the current display */
QUEUE_ELEMENT_DECL(ptrs,struct component);
} component_t;
typedef struct node_component {
component_t super;
GPtrArray *below;
source_data_t *flags[EMVIEW_MAX_COLORS];
node_id_t id;
int direct;
} node_component_t;
typedef struct box_component {
component_t super;
GPtrArray *above;
source_data_t *inside;
source_data_t *color;
source_data_t *border_color;
source_data_t *flags[EMVIEW_BOX_MAX_FLAGS];
} box_component_t;
/*
* OO Components
*/
struct component_vtbl {
char *name;
component_t *(*create)(); /* allocates a new component */
void (*destroy)(component_t *); /* deallocates a component */
component_t *(*copy)(component_t *); /* allocate and raw copy, dup internals */
int (*is_exclusive)(int field); /* return true if this field is excl */
/* performs assignment */
void(*assign)(component_t *c, int field, source_data_t *d);
/* clears
* - all if field is 0
* - full field if d is NULL
* - specific field if d set
*/
void(*clear)(component_t *c, int field, source_data_t *d);
void (*checkrefs)(component_t *c);
void (*layout)(component_t *c);
void (*draw)(component_t *c);
void (*print)(component_t *c, buf_t *buf);
};
typedef struct component_list {
QUEUE_DECL(components, component_t);
struct component_vtbl vtbl[EMVIEW_MAX_COMPONENTS];
/* note config changes, set timer to trigger update */
int config_change;
g_event_t *config_timeout;
} component_list_t;
#endif
See more files for this project here