From 69d66eb82fe30d7218eb84ab8a6bec492e2556f6 Mon Sep 17 00:00:00 2001 From: Bilal Elmoussaoui Date: Fri, 26 Jul 2024 12:29:40 +0200 Subject: [PATCH] cogl: Expose Atlas API Needed to build cogl-pango out of tree Part-of: --- cogl/cogl/cogl-atlas-private.h | 68 ++++++++++++++++++++++++++++++++++ cogl/cogl/cogl-atlas-texture.c | 2 +- cogl/cogl/cogl-atlas.c | 2 +- cogl/cogl/cogl-atlas.h | 41 +++----------------- cogl/cogl/cogl.h | 1 + cogl/cogl/meson.build | 3 +- 6 files changed, 79 insertions(+), 38 deletions(-) create mode 100644 cogl/cogl/cogl-atlas-private.h diff --git a/cogl/cogl/cogl-atlas-private.h b/cogl/cogl/cogl-atlas-private.h new file mode 100644 index 000000000..dc3c4f940 --- /dev/null +++ b/cogl/cogl/cogl-atlas-private.h @@ -0,0 +1,68 @@ +/* + * Cogl + * + * A Low Level GPU Graphics and Utilities API + * + * Copyright (C) 2010,2011 Intel Corporation. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#pragma once + +#include "cogl/cogl-atlas.h" +#include "cogl/cogl-rectangle-map.h" + +struct _CoglAtlas +{ + GObject parent_instance; + + CoglRectangleMap *map; + CoglContext *context; + + CoglTexture *texture; + CoglPixelFormat texture_format; + CoglAtlasFlags flags; + + CoglAtlasUpdatePositionCallback update_position_cb; + + GHookList pre_reorganize_callbacks; + GHookList post_reorganize_callbacks; +}; + +void +_cogl_atlas_remove (CoglAtlas *atlas, + const MtkRectangle *rectangle); + +CoglTexture * +_cogl_atlas_copy_rectangle (CoglAtlas *atlas, + int x, + int y, + int width, + int height, + CoglPixelFormat format); + + +void +_cogl_atlas_remove_reorganize_callback (CoglAtlas *atlas, + GHookFunc pre_callback, + GHookFunc post_callback, + void *user_data); diff --git a/cogl/cogl/cogl-atlas-texture.c b/cogl/cogl/cogl-atlas-texture.c index 7db9e13b2..41b30616c 100644 --- a/cogl/cogl/cogl-atlas-texture.c +++ b/cogl/cogl/cogl-atlas-texture.c @@ -43,7 +43,7 @@ #include "cogl/cogl-texture-driver.h" #include "cogl/cogl-rectangle-map.h" #include "cogl/cogl-journal-private.h" -#include "cogl/cogl-atlas.h" +#include "cogl/cogl-atlas-private.h" #include "cogl/cogl-sub-texture.h" #include "cogl/driver/gl/cogl-texture-gl-private.h" diff --git a/cogl/cogl/cogl-atlas.c b/cogl/cogl/cogl-atlas.c index a6c8b8366..8e5c8b13a 100644 --- a/cogl/cogl/cogl-atlas.c +++ b/cogl/cogl/cogl-atlas.c @@ -31,7 +31,7 @@ #include "config.h" -#include "cogl/cogl-atlas.h" +#include "cogl/cogl-atlas-private.h" #include "cogl/cogl-rectangle-map.h" #include "cogl/cogl-context-private.h" #include "cogl/cogl-texture-private.h" diff --git a/cogl/cogl/cogl-atlas.h b/cogl/cogl/cogl-atlas.h index d2f23e0de..c778883c8 100644 --- a/cogl/cogl/cogl-atlas.h +++ b/cogl/cogl/cogl-atlas.h @@ -28,7 +28,6 @@ #pragma once -#include "cogl/cogl-rectangle-map.h" #include "cogl/cogl-texture.h" typedef void @@ -53,23 +52,10 @@ G_DECLARE_FINAL_TYPE (CoglAtlas, ATLAS, GObject) -struct _CoglAtlas -{ - GObject parent_instance; - - CoglRectangleMap *map; - CoglContext *context; - - CoglTexture *texture; - CoglPixelFormat texture_format; - CoglAtlasFlags flags; - - CoglAtlasUpdatePositionCallback update_position_cb; - - GHookList pre_reorganize_callbacks; - GHookList post_reorganize_callbacks; -}; +/** + * cogl_atlas_new: (skip) + */ COGL_EXPORT CoglAtlas * cogl_atlas_new (CoglContext *context, CoglPixelFormat texture_format, @@ -82,26 +68,11 @@ cogl_atlas_reserve_space (CoglAtlas *atlas, unsigned int height, void *user_data); -void -_cogl_atlas_remove (CoglAtlas *atlas, - const MtkRectangle *rectangle); - -CoglTexture * -_cogl_atlas_copy_rectangle (CoglAtlas *atlas, - int x, - int y, - int width, - int height, - CoglPixelFormat format); - +/** + * cogl_atlas_add_reorganize_callback: (skip) + */ COGL_EXPORT void cogl_atlas_add_reorganize_callback (CoglAtlas *atlas, GHookFunc pre_callback, GHookFunc post_callback, void *user_data); - -void -_cogl_atlas_remove_reorganize_callback (CoglAtlas *atlas, - GHookFunc pre_callback, - GHookFunc post_callback, - void *user_data); diff --git a/cogl/cogl/cogl.h b/cogl/cogl/cogl.h index f85092fd4..0afe21c26 100644 --- a/cogl/cogl/cogl.h +++ b/cogl/cogl/cogl.h @@ -69,6 +69,7 @@ #include "cogl/cogl-texture-2d.h" #include "cogl/cogl-texture-2d-sliced.h" #include "cogl/cogl-sub-texture.h" +#include "cogl/cogl-atlas.h" #include "cogl/cogl-atlas-texture.h" #include "cogl/cogl-meta-texture.h" #include "cogl/cogl-enum-types.h" diff --git a/cogl/cogl/meson.build b/cogl/cogl/meson.build index a505378c3..3d80d4f18 100644 --- a/cogl/cogl/meson.build +++ b/cogl/cogl/meson.build @@ -20,6 +20,7 @@ cogl_deprecated_headers = [ cogl_headers = [ 'cogl.h', + 'cogl-atlas.h', 'cogl-atlas-texture.h', 'cogl-attribute-buffer.h', 'cogl-attribute.h', @@ -142,7 +143,7 @@ cogl_sources = [ 'cogl-atlas-texture-private.h', 'cogl-atlas-texture.c', 'cogl-atlas.c', - 'cogl-atlas.h', + 'cogl-atlas-private.h', 'cogl-attribute-buffer-private.h', 'cogl-attribute-buffer.c', 'cogl-attribute-private.h',