aboutsummaryrefslogtreecommitdiffstats
path: root/android/skin/composer.h
diff options
context:
space:
mode:
Diffstat (limited to 'android/skin/composer.h')
-rw-r--r--android/skin/composer.h102
1 files changed, 102 insertions, 0 deletions
diff --git a/android/skin/composer.h b/android/skin/composer.h
new file mode 100644
index 0000000..a52a972
--- /dev/null
+++ b/android/skin/composer.h
@@ -0,0 +1,102 @@
+/* Copyright (C) 2007-2008 The Android Open Source Project
+**
+** This software is licensed under the terms of the GNU General Public
+** License version 2, as published by the Free Software Foundation, and
+** may be copied, distributed, and modified under those terms.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+*/
+#ifndef _ANDROID_SKIN_COMPOSER_H
+#define _ANDROID_SKIN_COMPOSER_H
+
+#include "android/skin/rect.h"
+#include "android/skin/region.h"
+#include "android/utils/reflist.h"
+
+/* the composer displays stacked surfaces on a target window/SDL_Surface */
+
+typedef enum {
+ SKIN_PLATE_SURFACE = 0,
+ SKIN_PLATE_GROUP,
+ SKIN_PLATE_SPACE
+} SkinPlateType;
+
+typedef union SkinPlate SkinPlate;
+typedef struct SkinViewport SkinViewport;
+
+struct SkinPlateAny {
+ SkinPlateType type; /* class pointer */
+ SkinPlate* parent; /* parent container */
+ SkinPos pos; /* position relative to parent */
+ SkinRegion region[1]; /* the plate's region */
+ char isVisible; /* flag: TRUE iff the region is visible */
+ char isOpaque; /* flag: TRUE iff the region is opaque */
+};
+
+
+typedef void (*SkinPlateDrawFunc)( void* user, SkinRegion* region, SkinPos* apos, SkinViewport* viewport, int opaque );
+typedef void (*SkinPlateDoneFunc)( void* user );
+
+struct SkinPlateSurface {
+ struct SkinPlateAny any;
+ void* user;
+ SkinPlateDrawFunc draw;
+ SkinPlateDoneFunc done;
+};
+
+struct SkinPlateGroup {
+ struct SkinPlateAny any;
+ char hasRegion;
+ char hasOpaqueRegion;
+ SkinRegion opaqueRegion[1];
+ ARefList children[1];
+};
+
+struct SkinPlateSpace {
+ struct SkinPlateGroup group;
+ ARefList viewports[1];
+};
+
+
+union SkinPlate {
+ struct SkinPlateAny any;
+ struct SkinPlateSurface surface;
+ struct SkinPlateGroup group;
+ struct SkinPlateSpace space;
+};
+
+
+extern SkinPlate* skin_plate_surface( SkinPlate* parent,
+ SkinPos* pos,
+ SkinRegion* region,
+ void* user,
+ SkinPlateDrawFunc draw,
+ SkinPlateDoneFunc done );
+
+extern SkinPlate* skin_plate_group( SkinPlate* parent, SkinPos* pos );
+
+extern SkinPlate* skin_plate_space( void );
+
+extern void skin_plate_free( SkinPlate* plate );
+extern void skin_plate_invalidate( SkinPlate* plate, SkinRegion* region );
+extern void skin_plate_set_pos( SkinPlate* plate, int x, int y );
+extern void skin_plate_set_visible( SkinPlate* plate, int isVisible );
+extern void skin_plate_set_opaque( SkinPlate* plate, int isOpaque );
+
+struct SkinViewport {
+ SkinPlate* space;
+ SkinRect rect;
+ void* surface;
+ SkinPos spos;
+ SkinRegion update[1];
+};
+
+extern SkinViewport* skin_viewport( SkinPlate* space, SkinRect* rect, void* surface, int sx, int sy );
+extern void skin_viewport_free( SkinViewport* v );
+extern void skin_viewport_invalidate( SkinViewport* v, SkinRegion* r );
+extern void skin_viewport_redraw( SkinViewport* v );
+
+#endif /* _ANDROID_SKIN_COMPOSER_H */