typedef struct pepper_surface pepper_surface_t;
typedef struct pepper_view pepper_view_t;
typedef struct pepper_layer pepper_layer_t;
+typedef struct pepper_buffer pepper_buffer_t;
typedef struct pepper_matrix pepper_matrix_t;
PEPPER_API pepper_bool_t
pepper_surface_set_role(pepper_surface_t *surface, const char *role);
+PEPPER_API void
+pepper_surface_set_user_data(pepper_surface_t *surface, uint32_t key, void *data);
+
+PEPPER_API void *
+pepper_surface_get_user_data(pepper_surface_t *surface, uint32_t key);
+
+PEPPER_API pepper_buffer_t *
+pepper_surface_get_buffer(pepper_surface_t *surface);
+
+PEPPER_API void
+pepper_surface_get_buffer_offset(pepper_surface_t *surface, int32_t *x, int32_t *y);
+
+PEPPER_API int32_t
+pepper_surface_get_buffer_scale(pepper_surface_t *surface);
+
+PEPPER_API int32_t
+pepper_surface_get_buffer_transform(pepper_surface_t *surface);
+
/* View. */
PEPPER_API pepper_view_t *
pepper_view_create(pepper_compositor_t *compositor, pepper_surface_t *surface);
pepper_surface_state_init(&surface->pending);
- surface->transform = WL_OUTPUT_TRANSFORM_NORMAL;
- surface->scale = 1;
+ surface->buffer.transform = WL_OUTPUT_TRANSFORM_NORMAL;
+ surface->buffer.scale = 1;
pixman_region32_init(&surface->damage_region);
pixman_region32_init(&surface->opaque_region);
pepper_surface_state_fini(&surface->pending);
- if (surface->buffer)
- pepper_buffer_unreference(surface->buffer);
+ if (surface->buffer.buffer)
+ pepper_buffer_unreference(surface->buffer.buffer);
pixman_region32_fini(&surface->damage_region);
pixman_region32_fini(&surface->opaque_region);
{
pepper_buffer_reference(surface->pending.buffer);
- if (surface->buffer)
- pepper_buffer_unreference(surface->buffer);
+ if (surface->buffer.buffer)
+ pepper_buffer_unreference(surface->buffer.buffer);
/* Commit buffer attachment states. */
- surface->buffer = surface->pending.buffer;
- surface->offset_x += surface->pending.x;
- surface->offset_y += surface->pending.y;
- surface->transform = surface->pending.transform;
- surface->scale = surface->pending.scale;
+ surface->buffer.buffer = surface->pending.buffer;
+ surface->buffer.x += surface->pending.x;
+ surface->buffer.y += surface->pending.y;
+ surface->buffer.transform = surface->pending.transform;
+ surface->buffer.scale = surface->pending.scale;
/* Stop listening on buffer destruction signal of the pending state. */
if (surface->pending.buffer)
surface->w = 0;
surface->h = 0;
- if (surface->buffer)
+ if (surface->buffer.buffer)
{
- switch (surface->transform)
+ switch (surface->buffer.transform)
{
case WL_OUTPUT_TRANSFORM_NORMAL:
case WL_OUTPUT_TRANSFORM_180:
case WL_OUTPUT_TRANSFORM_FLIPPED_180:
- surface->w = surface->buffer->w;
- surface->h = surface->buffer->h;
+ surface->w = surface->buffer.buffer->w;
+ surface->h = surface->buffer.buffer->h;
break;
case WL_OUTPUT_TRANSFORM_90:
case WL_OUTPUT_TRANSFORM_270:
case WL_OUTPUT_TRANSFORM_FLIPPED_90:
case WL_OUTPUT_TRANSFORM_FLIPPED_270:
- surface->w = surface->buffer->h;
- surface->h = surface->buffer->w;
+ surface->w = surface->buffer.buffer->h;
+ surface->h = surface->buffer.buffer->w;
break;
}
}
- surface->w /= surface->scale;
- surface->h /= surface->scale;
+ surface->w /= surface->buffer.scale;
+ surface->h /= surface->buffer.scale;
/* Commit damage region. Pending state's damage is consumed by commit. */
pixman_region32_union(&surface->damage_region,
return PEPPER_TRUE;
}
+
+PEPPER_API void
+pepper_surface_set_user_data(pepper_surface_t *surface, uint32_t key, void *data)
+{
+ /* TODO: */
+}
+
+PEPPER_API void *
+pepper_surface_get_user_data(pepper_surface_t *surface, uint32_t key)
+{
+ /* TODO: */
+ return NULL;
+}
+
+PEPPER_API pepper_buffer_t *
+pepper_surface_get_buffer(pepper_surface_t *surface)
+{
+ return surface->buffer.buffer;
+}
+
+PEPPER_API void
+pepper_surface_get_buffer_offset(pepper_surface_t *surface, int32_t *x, int32_t *y)
+{
+ if (x)
+ *x = surface->buffer.x;
+
+ if (y)
+ *y = surface->buffer.y;
+}
+
+PEPPER_API int32_t
+pepper_surface_get_buffer_scale(pepper_surface_t *surface)
+{
+ return surface->buffer.scale;
+}
+
+PEPPER_API int32_t
+pepper_surface_get_buffer_transform(pepper_surface_t *surface)
+{
+ return surface->buffer.transform;
+}