18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Copyright (C) 2007-2008 The Android Open Source Project 28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** 38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** This software is licensed under the terms of the GNU General Public 48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** License version 2, as published by the Free Software Foundation, and 58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** may be copied, distributed, and modified under those terms. 68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** 78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** This program is distributed in the hope that it will be useful, 88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** but WITHOUT ANY WARRANTY; without even the implied warranty of 98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** GNU General Public License for more details. 118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project*/ 128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef _ANDROID_SKIN_COMPOSER_H 138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define _ANDROID_SKIN_COMPOSER_H 148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "android/skin/rect.h" 168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "android/skin/region.h" 178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "android/utils/reflist.h" 188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* the composer displays stacked surfaces on a target window/SDL_Surface */ 208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef enum { 228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project SKIN_PLATE_SURFACE = 0, 238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project SKIN_PLATE_GROUP, 248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project SKIN_PLATE_SPACE 258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} SkinPlateType; 268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef union SkinPlate SkinPlate; 288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct SkinViewport SkinViewport; 298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct SkinPlateAny { 318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project SkinPlateType type; /* class pointer */ 328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project SkinPlate* parent; /* parent container */ 338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project SkinPos pos; /* position relative to parent */ 348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project SkinRegion region[1]; /* the plate's region */ 358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project char isVisible; /* flag: TRUE iff the region is visible */ 368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project char isOpaque; /* flag: TRUE iff the region is opaque */ 378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}; 388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef void (*SkinPlateDrawFunc)( void* user, SkinRegion* region, SkinPos* apos, SkinViewport* viewport, int opaque ); 418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef void (*SkinPlateDoneFunc)( void* user ); 428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct SkinPlateSurface { 448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct SkinPlateAny any; 458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project void* user; 468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project SkinPlateDrawFunc draw; 478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project SkinPlateDoneFunc done; 488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}; 498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct SkinPlateGroup { 518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct SkinPlateAny any; 528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project char hasRegion; 538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project char hasOpaqueRegion; 548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project SkinRegion opaqueRegion[1]; 558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project ARefList children[1]; 568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}; 578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct SkinPlateSpace { 598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct SkinPlateGroup group; 608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project ARefList viewports[1]; 618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}; 628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectunion SkinPlate { 658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct SkinPlateAny any; 668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct SkinPlateSurface surface; 678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct SkinPlateGroup group; 688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct SkinPlateSpace space; 698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}; 708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern SkinPlate* skin_plate_surface( SkinPlate* parent, 738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project SkinPos* pos, 748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project SkinRegion* region, 758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project void* user, 768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project SkinPlateDrawFunc draw, 778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project SkinPlateDoneFunc done ); 788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern SkinPlate* skin_plate_group( SkinPlate* parent, SkinPos* pos ); 808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern SkinPlate* skin_plate_space( void ); 828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void skin_plate_free( SkinPlate* plate ); 848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void skin_plate_invalidate( SkinPlate* plate, SkinRegion* region ); 858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void skin_plate_set_pos( SkinPlate* plate, int x, int y ); 868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void skin_plate_set_visible( SkinPlate* plate, int isVisible ); 878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void skin_plate_set_opaque( SkinPlate* plate, int isOpaque ); 888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct SkinViewport { 908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project SkinPlate* space; 918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project SkinRect rect; 928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project void* surface; 938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project SkinPos spos; 948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project SkinRegion update[1]; 958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}; 968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern SkinViewport* skin_viewport( SkinPlate* space, SkinRect* rect, void* surface, int sx, int sy ); 988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void skin_viewport_free( SkinViewport* v ); 998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void skin_viewport_invalidate( SkinViewport* v, SkinRegion* r ); 1008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void skin_viewport_redraw( SkinViewport* v ); 1018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* _ANDROID_SKIN_COMPOSER_H */ 103