Move PaintVolume private API to a separate header.
$(srcdir)/clutter-keysyms-table.h \
$(srcdir)/clutter-master-clock.h \
$(srcdir)/clutter-model-private.h \
+ $(srcdir)/clutter-paint-volume-private.h \
$(srcdir)/clutter-private.h \
$(srcdir)/clutter-profile.h \
$(srcdir)/clutter-script-private.h \
#include "clutter-enum-types.h"
#include "clutter-main.h"
#include "clutter-marshal.h"
+#include "clutter-paint-volume-private.h"
#include "clutter-private.h"
#include "clutter-profile.h"
#include "clutter-scriptable.h"
#include "config.h"
#endif
-#include "clutter-color.h"
#include "clutter-clone.h"
#include "clutter-debug.h"
#include "clutter-main.h"
+#include "clutter-paint-volume-private.h"
#include "clutter-private.h"
#include "cogl/cogl.h"
--- /dev/null
+#ifndef __CLUTTER_PAINT_VOLUME_PRIVATE_H__
+#define __CLUTTER_PAINT_VOLUME_PRIVATE_H__
+
+#include <clutter/clutter-types.h>
+
+G_BEGIN_DECLS
+
+struct _ClutterPaintVolume
+{
+ ClutterActor *actor;
+
+ /* cuboid for the volume:
+ *
+ * 4━━━━━━━┓5
+ * ┏━━━━━━━━┓╱┃
+ * ┃0 ┊7 1┃ ┃
+ * ┃ ┄┄┄┄┄┃┄┃6
+ * ┃3 2┃╱
+ * ┗━━━━━━━━┛
+ *
+ * 0: top, left (origin) : always valid
+ * 1: top, right : always valid
+ * 2: bottom, right : updated lazily
+ * 3: bottom, left : always valid
+ *
+ * 4: top, left, back : always valid
+ * 5: top, right, back : updated lazily
+ * 6: bottom, right, back : updated lazily
+ * 7: bottom, left, back : updated lazily
+ *
+ * Elements 0, 1, 3 and 4 are filled in by the PaintVolume setters
+ *
+ * Note: the reason for this ordering is that we can simply ignore
+ * elements 4, 5, 6 and 7 most of the time for 2D actors when
+ * calculating the projected paint box.
+ */
+ ClutterVertex vertices[8];
+
+ /* As an optimization for internally managed PaintVolumes we allow
+ * initializing ClutterPaintVolume variables allocated on the stack
+ * so we can avoid hammering the slice allocator. */
+ guint is_static:1;
+
+ /* A newly initialized PaintVolume is considered empty as it is
+ * degenerate on all three axis.
+ *
+ * We consider this carefully when we union an empty volume with
+ * another so that the union simply results in a copy of the other
+ * volume instead of also bounding the origin of the empty volume.
+ *
+ * For example this is a convenient property when calculating the
+ * volume of a container as the union of the volume of its children
+ * where the initial volume passed to the containers
+ * ->get_paint_volume method will be empty. */
+ guint is_empty:1;
+
+ /* TRUE when we've updated the values we calculate lazily */
+ guint is_complete:1;
+
+ /* TRUE if vertices 4-7 can be ignored. (Only valid if complete is
+ * TRUE) */
+ guint is_2d:1;
+
+ /* Set to TRUE initialy but cleared if the paint volume is
+ * transfomed by a matrix. */
+ guint is_axis_aligned:1;
+
+
+ /* Note: There is a precedence to the above bitfields that should be
+ * considered whenever we implement code that manipulates
+ * PaintVolumes...
+ *
+ * Firstly if ->is_empty == TRUE then the values for ->is_complete
+ * and ->is_2d are undefined, so you should typically check
+ * ->is_empty as the first priority.
+ *
+ * XXX: document other invariables...
+ */
+};
+
+void _clutter_paint_volume_init_static (ClutterActor *actor,
+ ClutterPaintVolume *pv);
+ClutterPaintVolume *_clutter_paint_volume_new (ClutterActor *actor);
+void _clutter_paint_volume_copy_static (const ClutterPaintVolume *src_pv,
+ ClutterPaintVolume *dst_pv);
+void _clutter_paint_volume_set_from_volume (ClutterPaintVolume *pv,
+ const ClutterPaintVolume *src);
+
+void _clutter_paint_volume_complete (ClutterPaintVolume *pv);
+void _clutter_paint_volume_transform (ClutterPaintVolume *pv,
+ const CoglMatrix *matrix);
+void _clutter_paint_volume_project (ClutterPaintVolume *pv,
+ const CoglMatrix *modelview,
+ const CoglMatrix *projection,
+ const int *viewport);
+void _clutter_paint_volume_get_bounding_box (ClutterPaintVolume *pv,
+ ClutterActorBox *box);
+void _clutter_paint_volume_axis_align (ClutterPaintVolume *pv);
+void _clutter_paint_volume_set_reference_actor (ClutterPaintVolume *pv,
+ ClutterActor *actor);
+
+G_END_DECLS
+
+#endif /* __CLUTTER_PAINT_VOLUME_PRIVATE_H__ */
#include "config.h"
#endif
+#include <string.h>
+
#include <glib-object.h>
+#include "clutter-paint-volume-private.h"
#include "clutter-private.h"
G_DEFINE_BOXED_TYPE (ClutterPaintVolume, clutter_paint_volume,
ClutterSettings *settings;
};
-struct _ClutterPaintVolume
-{
- ClutterActor *actor;
-
- /* cuboid for the volume:
- *
- * 4━━━━━━━┓5
- * ┏━━━━━━━━┓╱┃
- * ┃0 ┊7 1┃ ┃
- * ┃ ┄┄┄┄┄┃┄┃6
- * ┃3 2┃╱
- * ┗━━━━━━━━┛
- *
- * 0: top, left (origin) : always valid
- * 1: top, right : always valid
- * 2: bottom, right : updated lazily
- * 3: bottom, left : always valid
- *
- * 4: top, left, back : always valid
- * 5: top, right, back : updated lazily
- * 6: bottom, right, back : updated lazily
- * 7: bottom, left, back : updated lazily
- *
- * Elements 0, 1, 3 and 4 are filled in by the PaintVolume setters
- *
- * Note: the reason for this ordering is that we can simply ignore
- * elements 4, 5, 6 and 7 most of the time for 2D actors when
- * calculating the projected paint box.
- */
- ClutterVertex vertices[8];
-
- /* As an optimization for internally managed PaintVolumes we allow
- * initializing ClutterPaintVolume variables allocated on the stack
- * so we can avoid hammering the slice allocator. */
- guint is_static:1;
-
- /* A newly initialized PaintVolume is considered empty as it is
- * degenerate on all three axis.
- *
- * We consider this carefully when we union an empty volume with
- * another so that the union simply results in a copy of the other
- * volume instead of also bounding the origin of the empty volume.
- *
- * For example this is a convenient property when calculating the
- * volume of a container as the union of the volume of its children
- * where the initial volume passed to the containers
- * ->get_paint_volume method will be empty. */
- guint is_empty:1;
-
- /* TRUE when we've updated the values we calculate lazily */
- guint is_complete:1;
-
- /* TRUE if vertices 4-7 can be ignored. (Only valid if complete is
- * TRUE) */
- guint is_2d:1;
-
- /* Set to TRUE initialy but cleared if the paint volume is
- * transfomed by a matrix. */
- guint is_axis_aligned:1;
-
-
- /* Note: There is a precedence to the above bitfields that should be
- * considered whenever we implement code that manipulates
- * PaintVolumes...
- *
- * Firstly if ->is_empty == TRUE then the values for ->is_complete
- * and ->is_2d are undefined, so you should typically check
- * ->is_empty as the first priority.
- *
- * XXX: document other invariables...
- */
-};
-
/* ClutterActorTraverseFlags:
*
* Controls some options for how clutter_actor_traverse() iterates
gpointer data);
gpointer _clutter_event_get_platform_data (const ClutterEvent *event);
-void _clutter_paint_volume_init_static (ClutterActor *actor,
- ClutterPaintVolume *pv);
-ClutterPaintVolume *_clutter_paint_volume_new (ClutterActor *actor);
-void _clutter_paint_volume_copy_static (const ClutterPaintVolume *src_pv,
- ClutterPaintVolume *dst_pv);
-void _clutter_paint_volume_set_from_volume (ClutterPaintVolume *pv,
- const ClutterPaintVolume *src);
-
-void _clutter_paint_volume_complete (ClutterPaintVolume *pv);
-void _clutter_paint_volume_transform (ClutterPaintVolume *pv,
- const CoglMatrix *matrix);
-void _clutter_paint_volume_project (ClutterPaintVolume *pv,
- const CoglMatrix *modelview,
- const CoglMatrix *projection,
- const int *viewport);
-void _clutter_paint_volume_get_bounding_box (ClutterPaintVolume *pv,
- ClutterActorBox *box);
-void _clutter_paint_volume_axis_align (ClutterPaintVolume *pv);
-void _clutter_paint_volume_set_reference_actor (ClutterPaintVolume *pv,
- ClutterActor *actor);
#include "clutter-stage.h"
#include "clutter-backend-private.h"
-#include "clutter-main.h"
#include "clutter-color.h"
-#include "clutter-util.h"
+#include "clutter-container.h"
+#include "clutter-debug.h"
+#include "clutter-device-manager-private.h"
+#include "clutter-enum-types.h"
+#include "clutter-id-pool.h"
+#include "clutter-main.h"
#include "clutter-marshal.h"
#include "clutter-master-clock.h"
-#include "clutter-enum-types.h"
+#include "clutter-paint-volume-private.h"
#include "clutter-private.h"
-#include "clutter-debug.h"
-#include "clutter-stage-manager-private.h"
-#include "clutter-version.h" /* For flavour */
-#include "clutter-id-pool.h"
-#include "clutter-container.h"
#include "clutter-profile.h"
-#include "clutter-device-manager-private.h"
+#include "clutter-stage-manager-private.h"
#include "clutter-stage-private.h"
+#include "clutter-util.h"
+#include "clutter-version.h" /* For flavour */
#include "cogl/cogl.h"
#include "clutter-device-manager-private.h"
#include "clutter-event.h"
#include "clutter-main.h"
+#include "clutter-paint-volume-private.h"
#include "clutter-private.h"
#include "clutter-stage-private.h"
#include "config.h"
#endif
-#include "../clutter-marshal.h"
#include "clutter-x11-texture-pixmap.h"
#include "clutter-x11.h"
#include "clutter-backend-x11.h"
+
+#include "clutter-marshal.h"
+#include "clutter-paint-volume-private.h"
#include "clutter-private.h"
#include "cogl/cogl.h"