Merge CoglPango inside of Clutter
As that is where the whole text rendering integration happens And would allow us to get rid of some over-abstraction in cogl-pango, simplify ClutterSnapshot integration as well Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4004>
This commit is contained in:
parent
b6b004b437
commit
fe3192169a
@ -801,7 +801,7 @@ reference:
|
||||
script:
|
||||
- mkdir references
|
||||
- cp -r doc/website/* ./references
|
||||
- mv build/doc/reference/{clutter/clutter,cogl/cogl,cogl-pango/cogl-pango,meta/meta,mtk/mtk} references/
|
||||
- mv build/doc/reference/{clutter/clutter,cogl/cogl,meta/meta,mtk/mtk} references/
|
||||
artifacts:
|
||||
expire_in: 1 week
|
||||
expose_as: 'Documentation'
|
||||
|
@ -44,7 +44,6 @@ documentation and API references below first.
|
||||
- Meta: <https://mutter.gnome.org/meta/>
|
||||
- Clutter: <https://mutter.gnome.org/clutter/>
|
||||
- Cogl: <https://mutter.gnome.org/cogl/>
|
||||
- CoglPango: <https://mutter.gnome.org/cogl-pango/>
|
||||
- Mtk: <https://mutter.gnome.org/mtk/>
|
||||
|
||||
## Meetings
|
||||
|
@ -13055,7 +13055,7 @@ update_pango_context (ClutterBackend *backend,
|
||||
* stored by the #ClutterBackend change.
|
||||
*
|
||||
* You can use the returned #PangoContext to create a #PangoLayout
|
||||
* and render text using cogl_pango_show_layout() to reuse the
|
||||
* and render text using clutter_show_layout() to reuse the
|
||||
* glyphs cache also used by Clutter.
|
||||
*
|
||||
* Return value: (transfer none): the #PangoContext for a #ClutterActor.
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include "clutter/clutter-private.h"
|
||||
#include "clutter/clutter-paint-node-private.h"
|
||||
#include "clutter/clutter-settings-private.h"
|
||||
#include "clutter/pango/cogl-pango-private.h"
|
||||
|
||||
static gboolean clutter_show_fps = FALSE;
|
||||
static gboolean clutter_enable_accessibility = TRUE;
|
||||
|
@ -19,10 +19,10 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <pango/pango.h>
|
||||
|
||||
#include "clutter-backend.h"
|
||||
#include "clutter-settings.h"
|
||||
#include "cogl-pango/cogl-pango.h"
|
||||
|
||||
|
||||
typedef ClutterBackend * (* ClutterBackendConstructor) (ClutterContext *context,
|
||||
gpointer user_data);
|
||||
|
@ -42,7 +42,6 @@
|
||||
#include "clutter/clutter-backend-private.h"
|
||||
|
||||
#include "cogl/cogl.h"
|
||||
#include "cogl-pango/cogl-pango.h"
|
||||
|
||||
|
||||
typedef struct
|
||||
|
@ -27,9 +27,12 @@
|
||||
#error "Only <clutter/clutter.h> can be included directly."
|
||||
#endif
|
||||
|
||||
#include <pango/pango.h>
|
||||
#include <pango/pangocairo.h>
|
||||
|
||||
#include "clutter/clutter-actor.h"
|
||||
#include "clutter/clutter-stage.h"
|
||||
#include <pango/pango.h>
|
||||
#include "cogl/cogl.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
@ -157,4 +160,50 @@ void clutter_debug_set_max_render_time_constant (int max_rend
|
||||
CLUTTER_EXPORT
|
||||
ClutterTextDirection clutter_get_text_direction (void);
|
||||
|
||||
typedef void (* ClutterPipelineSetup) (CoglPipeline *pipeline,
|
||||
gpointer user_data);
|
||||
|
||||
/**
|
||||
* clutter_font_map_new:
|
||||
*
|
||||
* Creates a new font map.
|
||||
*
|
||||
* Return value: (transfer full): the newly created #PangoFontMap
|
||||
*/
|
||||
CLUTTER_EXPORT PangoFontMap *
|
||||
clutter_font_map_new (CoglContext *context);
|
||||
|
||||
/**
|
||||
* clutter_ensure_glyph_cache_for_layout:
|
||||
* @layout: A #PangoLayout
|
||||
*
|
||||
* This updates any internal glyph cache textures as necessary to be
|
||||
* able to render the given @layout.
|
||||
*
|
||||
* This api should be used to avoid mid-scene modifications of
|
||||
* glyph-cache textures which can lead to undefined rendering results.
|
||||
*/
|
||||
CLUTTER_EXPORT void
|
||||
clutter_ensure_glyph_cache_for_layout (PangoLayout *layout);
|
||||
|
||||
/**
|
||||
* clutter_show_layout: (skip)
|
||||
* @framebuffer: A #CoglFramebuffer to draw too.
|
||||
* @layout: a #PangoLayout
|
||||
* @x: X coordinate to render the layout at
|
||||
* @y: Y coordinate to render the layout at
|
||||
* @color: color to use when rendering the layout
|
||||
*
|
||||
* Draws a solidly coloured @layout on the given @framebuffer at (@x,
|
||||
* @y) within the `framebuffer`'s current model-view coordinate space.
|
||||
*/
|
||||
CLUTTER_EXPORT void
|
||||
clutter_show_layout (CoglFramebuffer *framebuffer,
|
||||
PangoLayout *layout,
|
||||
float x,
|
||||
float y,
|
||||
const CoglColor *color,
|
||||
ClutterPipelineSetup pipeline_setup,
|
||||
gpointer pipeline_setup_userdata);
|
||||
|
||||
G_END_DECLS
|
||||
|
@ -812,7 +812,7 @@ clutter_text_node_draw (ClutterPaintNode *node,
|
||||
clipped = TRUE;
|
||||
}
|
||||
|
||||
cogl_pango_show_layout (fb,
|
||||
clutter_show_layout (fb,
|
||||
tnode->layout,
|
||||
op->op.texrect[0],
|
||||
op->op.texrect[1],
|
||||
|
@ -29,8 +29,6 @@
|
||||
#include <glib.h>
|
||||
#include <pango/pango.h>
|
||||
|
||||
#include "cogl-pango/cogl-pango.h"
|
||||
|
||||
#include "clutter/clutter-backend.h"
|
||||
#include "clutter/clutter-context.h"
|
||||
#include "clutter/clutter-effect.h"
|
||||
|
@ -56,7 +56,7 @@
|
||||
#include "clutter/clutter-keysyms.h"
|
||||
#include "clutter/clutter-main.h"
|
||||
#include "clutter/clutter-marshal.h"
|
||||
#include "clutter/clutter-private.h" /* includes <cogl-pango/cogl-pango.h> */
|
||||
#include "clutter/clutter-private.h"
|
||||
#include "clutter/clutter-property-transition.h"
|
||||
#include "clutter/clutter-text-buffer.h"
|
||||
#include "clutter/clutter-paint-volume-private.h"
|
||||
@ -1073,7 +1073,7 @@ clutter_text_create_layout (ClutterText *text,
|
||||
oldest_cache->layout =
|
||||
clutter_text_create_layout_no_cache (text, width, height, ellipsize);
|
||||
|
||||
cogl_pango_ensure_glyph_cache_for_layout (oldest_cache->layout);
|
||||
clutter_ensure_glyph_cache_for_layout (oldest_cache->layout);
|
||||
|
||||
/* Mark the 'time' this cache was created and advance the time */
|
||||
oldest_cache->age = priv->cache_age++;
|
||||
@ -2030,7 +2030,7 @@ paint_selection_rectangle (ClutterText *self,
|
||||
color->blue / 255.0f,
|
||||
paint_opacity / 255.0f * color->alpha / 255.0f);
|
||||
|
||||
cogl_pango_show_layout (fb, layout, priv->text_x, 0, &cogl_color,
|
||||
clutter_show_layout (fb, layout, priv->text_x, 0, &cogl_color,
|
||||
setup_pango_pipeline,
|
||||
&pango_pipeline_data);
|
||||
|
||||
@ -2863,7 +2863,7 @@ clutter_text_paint (ClutterActor *self,
|
||||
.color_state = color_state,
|
||||
.target_color_state = target_color_state,
|
||||
};
|
||||
cogl_pango_show_layout (fb, layout, priv->text_x, priv->text_y, &color,
|
||||
clutter_show_layout (fb, layout, priv->text_x, priv->text_y, &color,
|
||||
setup_pango_pipeline,
|
||||
&pango_pipeline_data);
|
||||
|
||||
|
@ -84,6 +84,10 @@ clutter_headers = [
|
||||
]
|
||||
|
||||
clutter_sources = [
|
||||
'pango/cogl-pango-display-list.c',
|
||||
'pango/cogl-pango-glyph-cache.c',
|
||||
'pango/cogl-pango-pipeline-cache.c',
|
||||
'pango/cogl-pango-render.c',
|
||||
'clutter-accessibility.c',
|
||||
'clutter-action.c',
|
||||
'clutter-actor-box.c',
|
||||
@ -177,6 +181,10 @@ clutter_sources = [
|
||||
]
|
||||
|
||||
clutter_private_headers = [
|
||||
'pango/cogl-pango-display-list.h',
|
||||
'pango/cogl-pango-glyph-cache.h',
|
||||
'pango/cogl-pango-pipeline-cache.h',
|
||||
'pango/cogl-pango-private.h',
|
||||
'clutter-accessibility-private.h',
|
||||
'clutter-actor-meta-private.h',
|
||||
'clutter-actor-private.h',
|
||||
@ -262,7 +270,6 @@ libmutter_clutter = shared_library(libmutter_clutter_name,
|
||||
gnu_symbol_visibility: 'hidden',
|
||||
link_with: [
|
||||
libmutter_cogl,
|
||||
libmutter_cogl_pango,
|
||||
],
|
||||
install_rpath: pkglibdir,
|
||||
install_dir: pkglibdir,
|
||||
@ -294,12 +301,12 @@ if have_introspection
|
||||
includes: [
|
||||
libmutter_mtk_gir[0],
|
||||
libmutter_cogl_gir[0],
|
||||
libmutter_cogl_pango_gir[0],
|
||||
'GL-1.0',
|
||||
'Gio-2.0',
|
||||
'GObject-2.0',
|
||||
'cairo-1.0',
|
||||
'Atk-1.0',
|
||||
'Pango-1.0',
|
||||
],
|
||||
dependencies: [cogl_deps],
|
||||
extra_args: clutter_introspection_args + ['--c-include=clutter/clutter.h'],
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Cogl
|
||||
* Clutter.
|
||||
*
|
||||
* A Low Level GPU Graphics and Utilities API
|
||||
* An OpenGL based 'interactive canvas' library.
|
||||
*
|
||||
* Copyright (C) 2009 Intel Corporation.
|
||||
*
|
||||
@ -31,8 +31,8 @@
|
||||
#include <glib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "cogl-pango/cogl-pango-display-list.h"
|
||||
#include "cogl-pango/cogl-pango-pipeline-cache.h"
|
||||
#include "clutter/pango/cogl-pango-display-list.h"
|
||||
#include "clutter/pango/cogl-pango-pipeline-cache.h"
|
||||
#include "cogl/cogl.h"
|
||||
|
||||
typedef enum
|
||||
@ -393,7 +393,7 @@ _cogl_framebuffer_draw_display_list_texture (CoglFramebuffer *fb,
|
||||
void
|
||||
cogl_pango_display_list_render (CoglFramebuffer *fb,
|
||||
CoglPangoDisplayList *dl,
|
||||
CoglPangoPipelineSetup pipeline_setup,
|
||||
ClutterPipelineSetup pipeline_setup,
|
||||
gpointer pipeline_setup_user_data,
|
||||
const CoglColor *color)
|
||||
{
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Cogl
|
||||
* Clutter.
|
||||
*
|
||||
* A Low Level GPU Graphics and Utilities API
|
||||
* An OpenGL based 'interactive canvas' library.
|
||||
*
|
||||
* Copyright (C) 2009 Intel Corporation.
|
||||
*
|
||||
@ -30,9 +30,9 @@
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#include "cogl-pango/cogl-pango-pipeline-cache.h"
|
||||
#include "clutter/pango/cogl-pango-pipeline-cache.h"
|
||||
#include "clutter/clutter-main.h"
|
||||
|
||||
#include "cogl-pango/cogl-pango.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
@ -73,7 +73,7 @@ _cogl_pango_display_list_add_trapezoid (CoglPangoDisplayList *dl,
|
||||
void
|
||||
cogl_pango_display_list_render (CoglFramebuffer *framebuffer,
|
||||
CoglPangoDisplayList *dl,
|
||||
CoglPangoPipelineSetup pipeline_setup,
|
||||
ClutterPipelineSetup pipeline_setup,
|
||||
gpointer pipeline_setup_user_data,
|
||||
const CoglColor *color);
|
||||
|
@ -32,8 +32,7 @@
|
||||
#include <pango/pangocairo.h>
|
||||
#include <pango/pango-renderer.h>
|
||||
|
||||
#include "cogl-pango/cogl-pango.h"
|
||||
#include "cogl-pango/cogl-pango-private.h"
|
||||
#include "clutter/pango/cogl-pango-private.h"
|
||||
#include "cogl/cogl.h"
|
||||
|
||||
static GQuark cogl_pango_font_map_get_priv_key (void) G_GNUC_CONST;
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Cogl
|
||||
* Clutter.
|
||||
*
|
||||
* A Low Level GPU Graphics and Utilities API
|
||||
* An OpenGL based 'interactive canvas' library.
|
||||
*
|
||||
* Copyright (C) 2008 OpenedHand
|
||||
*
|
||||
@ -30,8 +30,9 @@
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#include "cogl-pango/cogl-pango-glyph-cache.h"
|
||||
#include "cogl-pango/cogl-pango-private.h"
|
||||
#include "clutter/clutter-debug.h"
|
||||
#include "clutter/pango/cogl-pango-glyph-cache.h"
|
||||
#include "clutter/pango/cogl-pango-private.h"
|
||||
|
||||
typedef struct _CoglPangoGlyphCacheKey CoglPangoGlyphCacheKey;
|
||||
|
||||
@ -276,7 +277,7 @@ cogl_pango_glyph_cache_add_to_local_atlas (CoglPangoGlyphCache *cache,
|
||||
COGL_ATLAS_CLEAR_TEXTURE |
|
||||
COGL_ATLAS_DISABLE_MIGRATION,
|
||||
cogl_pango_glyph_cache_update_position_cb);
|
||||
g_log (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, "Created new atlas for glyphs: %p", atlas);
|
||||
CLUTTER_NOTE (PANGO, "Created new atlas for glyphs: %p", atlas);
|
||||
/* If we still can't reserve space then something has gone
|
||||
seriously wrong so we'll just give up */
|
||||
if (!cogl_atlas_reserve_space (atlas,
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Cogl
|
||||
* Clutter.
|
||||
*
|
||||
* A Low Level GPU Graphics and Utilities API
|
||||
* An OpenGL based 'interactive canvas' library.
|
||||
*
|
||||
* Copyright (C) 2008 OpenedHand
|
||||
*
|
||||
@ -66,14 +66,14 @@ typedef void (* CoglPangoGlyphCacheDirtyFunc) (PangoFont *font,
|
||||
PangoGlyph glyph,
|
||||
CoglPangoGlyphCacheValue *value);
|
||||
|
||||
COGL_EXPORT CoglPangoGlyphCache *
|
||||
CoglPangoGlyphCache *
|
||||
cogl_pango_glyph_cache_new (CoglContext *ctx,
|
||||
gboolean use_mipmapping);
|
||||
|
||||
COGL_EXPORT void
|
||||
void
|
||||
cogl_pango_glyph_cache_free (CoglPangoGlyphCache *cache);
|
||||
|
||||
COGL_EXPORT CoglPangoGlyphCacheValue *
|
||||
CoglPangoGlyphCacheValue *
|
||||
cogl_pango_glyph_cache_lookup (CoglPangoGlyphCache *cache,
|
||||
CoglContext *context,
|
||||
gboolean create,
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Cogl
|
||||
* Clutter.
|
||||
*
|
||||
* A Low Level GPU Graphics and Utilities API
|
||||
* An OpenGL based 'interactive canvas' library.
|
||||
*
|
||||
* Copyright (C) 2011 Intel Corporation.
|
||||
*
|
||||
@ -35,7 +35,7 @@
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#include "cogl-pango/cogl-pango-pipeline-cache.h"
|
||||
#include "clutter/pango/cogl-pango-pipeline-cache.h"
|
||||
|
||||
typedef struct _CoglPangoPipelineCacheEntry CoglPangoPipelineCacheEntry;
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Cogl
|
||||
* Clutter.
|
||||
*
|
||||
* A Low Level GPU Graphics and Utilities API
|
||||
* An OpenGL based 'interactive canvas' library.
|
||||
*
|
||||
* Copyright (C) 2011 Intel Corporation.
|
||||
*
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Cogl
|
||||
* Clutter.
|
||||
*
|
||||
* A Low Level GPU Graphics and Utilities API
|
||||
* An OpenGL based 'interactive canvas' library.
|
||||
*
|
||||
* Copyright (C) 2008 OpenedHand
|
||||
* Copyright (C) 2012 Intel Corporation.
|
||||
@ -35,13 +35,17 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "cogl-pango/cogl-pango.h"
|
||||
#include <pango/pango.h>
|
||||
|
||||
#include "cogl/cogl.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
PangoRenderer *
|
||||
_cogl_pango_renderer_new (CoglContext *context);
|
||||
|
||||
PangoFontMap *
|
||||
cogl_pango_font_map_new (CoglContext *context);
|
||||
|
||||
/**
|
||||
* cogl_pango_font_map_get_renderer:
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Cogl
|
||||
* Clutter.
|
||||
*
|
||||
* A Low Level GPU Graphics and Utilities API
|
||||
* An OpenGL based 'interactive canvas' library.
|
||||
*
|
||||
* Copyright (C) 2008 OpenedHand
|
||||
* Copyright (C) 2012 Intel Corporation.
|
||||
@ -41,9 +41,10 @@
|
||||
#include <cairo.h>
|
||||
#include <cairo-ft.h>
|
||||
|
||||
#include "cogl-pango/cogl-pango-private.h"
|
||||
#include "cogl-pango/cogl-pango-glyph-cache.h"
|
||||
#include "cogl-pango/cogl-pango-display-list.h"
|
||||
#include "clutter/clutter-debug.h"
|
||||
#include "clutter/pango/cogl-pango-private.h"
|
||||
#include "clutter/pango/cogl-pango-glyph-cache.h"
|
||||
#include "clutter/pango/cogl-pango-display-list.h"
|
||||
#include "cogl/cogl.h"
|
||||
|
||||
#define PANGO_UNKNOWN_GLYPH_WIDTH 10
|
||||
@ -301,12 +302,12 @@ cogl_pango_render_qdata_destroy (CoglPangoLayoutQdata *qdata)
|
||||
}
|
||||
|
||||
void
|
||||
cogl_pango_show_layout (CoglFramebuffer *fb,
|
||||
clutter_show_layout (CoglFramebuffer *fb,
|
||||
PangoLayout *layout,
|
||||
float x,
|
||||
float y,
|
||||
const CoglColor *color,
|
||||
CoglPangoPipelineSetup pipeline_setup,
|
||||
ClutterPipelineSetup pipeline_setup,
|
||||
gpointer pipeline_setup_userdata)
|
||||
{
|
||||
PangoContext *context;
|
||||
@ -347,7 +348,7 @@ cogl_pango_show_layout (CoglFramebuffer *fb,
|
||||
&priv->mipmap_caches :
|
||||
&priv->no_mipmap_caches;
|
||||
|
||||
cogl_pango_ensure_glyph_cache_for_layout (layout);
|
||||
clutter_ensure_glyph_cache_for_layout (layout);
|
||||
|
||||
qdata->display_list =
|
||||
_cogl_pango_display_list_new (caches->pipeline_cache);
|
||||
@ -436,7 +437,7 @@ cogl_pango_renderer_set_dirty_glyph (PangoFont *font,
|
||||
cairo_format_t format_cairo;
|
||||
CoglPixelFormat format_cogl;
|
||||
|
||||
g_log (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, "redrawing glyph %i", glyph);
|
||||
CLUTTER_NOTE (PANGO, "redrawing glyph %i", glyph);
|
||||
|
||||
/* Glyphs that don't take up any space will end up without a
|
||||
texture. These should never become dirty so they shouldn't end up
|
||||
@ -546,7 +547,7 @@ _cogl_pango_set_dirty_glyphs (CoglPangoRenderer *priv)
|
||||
}
|
||||
|
||||
void
|
||||
cogl_pango_ensure_glyph_cache_for_layout (PangoLayout *layout)
|
||||
clutter_ensure_glyph_cache_for_layout (PangoLayout *layout)
|
||||
{
|
||||
PangoContext *context;
|
||||
CoglPangoRenderer *priv;
|
||||
@ -750,7 +751,7 @@ cogl_pango_renderer_draw_glyphs (PangoRenderer *renderer,
|
||||
font,
|
||||
gi->glyph);
|
||||
|
||||
/* cogl_pango_ensure_glyph_cache_for_layout should always be
|
||||
/* clutter_ensure_glyph_cache_for_layout should always be
|
||||
called before rendering a layout so we should never have
|
||||
a dirty glyph here */
|
||||
g_assert (cache_value == NULL || !cache_value->dirty);
|
@ -1,92 +0,0 @@
|
||||
/*
|
||||
* Cogl
|
||||
*
|
||||
* A Low Level GPU Graphics and Utilities API
|
||||
*
|
||||
* Copyright (C) 2008 OpenedHand
|
||||
* Copyright (C) 2012 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.
|
||||
*
|
||||
* Authors:
|
||||
* Neil Roberts <neil@linux.intel.com>
|
||||
* Robert Bragg <robert@linux.intel.com>
|
||||
* Matthew Allum <mallum@openedhand.com>
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <glib-object.h>
|
||||
#include <pango/pango.h>
|
||||
#include <pango/pangocairo.h>
|
||||
|
||||
#include "cogl/cogl.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
typedef void (* CoglPangoPipelineSetup) (CoglPipeline *pipeline,
|
||||
gpointer user_data);
|
||||
|
||||
/**
|
||||
* cogl_pango_font_map_new:
|
||||
*
|
||||
* Creates a new font map.
|
||||
*
|
||||
* Return value: (transfer full): the newly created #PangoFontMap
|
||||
*/
|
||||
COGL_EXPORT PangoFontMap *
|
||||
cogl_pango_font_map_new (CoglContext *context);
|
||||
|
||||
/**
|
||||
* cogl_pango_ensure_glyph_cache_for_layout:
|
||||
* @layout: A #PangoLayout
|
||||
*
|
||||
* This updates any internal glyph cache textures as necessary to be
|
||||
* able to render the given @layout.
|
||||
*
|
||||
* This api should be used to avoid mid-scene modifications of
|
||||
* glyph-cache textures which can lead to undefined rendering results.
|
||||
*/
|
||||
COGL_EXPORT void
|
||||
cogl_pango_ensure_glyph_cache_for_layout (PangoLayout *layout);
|
||||
|
||||
/**
|
||||
* cogl_pango_show_layout: (skip)
|
||||
* @framebuffer: A #CoglFramebuffer to draw too.
|
||||
* @layout: a #PangoLayout
|
||||
* @x: X coordinate to render the layout at
|
||||
* @y: Y coordinate to render the layout at
|
||||
* @color: color to use when rendering the layout
|
||||
*
|
||||
* Draws a solidly coloured @layout on the given @framebuffer at (@x,
|
||||
* @y) within the `framebuffer`'s current model-view coordinate space.
|
||||
*/
|
||||
COGL_EXPORT void
|
||||
cogl_pango_show_layout (CoglFramebuffer *framebuffer,
|
||||
PangoLayout *layout,
|
||||
float x,
|
||||
float y,
|
||||
const CoglColor *color,
|
||||
CoglPangoPipelineSetup pipeline_setup,
|
||||
gpointer pipeline_setup_userdata);
|
||||
|
||||
|
||||
G_END_DECLS
|
@ -1,82 +0,0 @@
|
||||
cogl_pango_sources = [
|
||||
'cogl-pango-display-list.c',
|
||||
'cogl-pango-display-list.h',
|
||||
'cogl-pango-fontmap.c',
|
||||
'cogl-pango-glyph-cache.c',
|
||||
'cogl-pango-glyph-cache.h',
|
||||
'cogl-pango-pipeline-cache.c',
|
||||
'cogl-pango-pipeline-cache.h',
|
||||
'cogl-pango-private.h',
|
||||
'cogl-pango-render.c',
|
||||
]
|
||||
|
||||
cogl_pango_public_headers = [
|
||||
'cogl-pango.h',
|
||||
]
|
||||
|
||||
cogl_pango_deps = [
|
||||
cairo_dep,
|
||||
pango_dep,
|
||||
pangocairo_dep,
|
||||
libmutter_cogl_dep,
|
||||
]
|
||||
|
||||
libmutter_cogl_pango_name = 'mutter-cogl-pango-' + libmutter_api_version
|
||||
libmutter_cogl_pango = shared_library(libmutter_cogl_pango_name,
|
||||
sources: [cogl_pango_sources, cogl_pango_public_headers],
|
||||
version: '0.0.0',
|
||||
soversion: 0,
|
||||
c_args: cogl_debug_c_args,
|
||||
include_directories: [cogl_includepath, top_includepath],
|
||||
gnu_symbol_visibility: 'hidden',
|
||||
dependencies: [cogl_pango_deps],
|
||||
install_rpath: pkglibdir,
|
||||
install_dir: pkglibdir,
|
||||
install: true,
|
||||
)
|
||||
|
||||
libmutter_cogl_pango_dep = declare_dependency(
|
||||
link_with: libmutter_cogl_pango,
|
||||
)
|
||||
|
||||
if have_introspection
|
||||
libmutter_cogl_pango_gir = gnome.generate_gir(libmutter_cogl_pango,
|
||||
sources: cogl_pango_public_headers,
|
||||
nsversion: libmutter_api_version,
|
||||
namespace: 'CoglPango',
|
||||
symbol_prefix: 'cogl_pango',
|
||||
header: 'cogl-pango.h',
|
||||
includes: [
|
||||
libmutter_mtk_gir[0],
|
||||
libmutter_cogl_gir[0],
|
||||
'Pango-1.0',
|
||||
'PangoCairo-1.0'
|
||||
],
|
||||
dependencies: [
|
||||
cogl_deps,
|
||||
pango_dep,
|
||||
libmutter_cogl_pango_dep,
|
||||
],
|
||||
export_packages: [libmutter_cogl_pango_name],
|
||||
extra_args: introspection_args + [
|
||||
'-DG_LOG_DOMAIN="CoglPango"',
|
||||
],
|
||||
kwargs: introspection_common,
|
||||
)
|
||||
endif
|
||||
|
||||
cogl_pango_includesubdir = cogl_includesubdir / 'cogl-pango'
|
||||
install_headers(cogl_pango_public_headers, subdir: cogl_pango_includesubdir)
|
||||
|
||||
pkg.generate(libmutter_cogl_pango,
|
||||
name: 'CoglPango',
|
||||
filebase: libmutter_cogl_pango_name,
|
||||
description: 'A text rendering for Cogl in mutter',
|
||||
subdirs: pkgname / 'cogl',
|
||||
requires: [cogl_pkg_deps, libmutter_cogl_name, pango_dep, pangocairo_dep],
|
||||
version: meson.project_version(),
|
||||
variables: [
|
||||
'apiversion=' + libmutter_api_version,
|
||||
],
|
||||
install_dir: pcdir,
|
||||
)
|
@ -92,4 +92,3 @@ cogl_debug_c_args = cc.get_supported_arguments(cogl_debug_c_args)
|
||||
cogl_c_args += cogl_debug_c_args
|
||||
|
||||
subdir('cogl')
|
||||
subdir('cogl-pango')
|
||||
|
@ -35,7 +35,7 @@ When a test fails when running `meson test`, it makes sense to re-run this speci
|
||||
12/243 mutter:cogl+cogl/conform / cogl-test-backface-culling-gles2 OK 1.46s
|
||||
^CWARNING: CTRL-C detected, interrupting mutter:cogl+cogl/conform / cogl-test-just-vertex-shader-gl3
|
||||
13/243 mutter:cogl+cogl/conform / cogl-test-just-vertex-shader-gl3 INTERRUPT 0.75s killed by signal 15 SIGTERM
|
||||
>>> COGL_DRIVER=gl3 G_TEST_BUILDDIR=/var/home/swick/Projects/mutter/build/src/tests/cogl/conform MALLOC_PERTURB_=83 G_TEST_SRCDIR=/var/home/swick/Projects/mutter/src/tests/cogl/conform G_ENABLE_DIAGNOSTIC=0 LD_LIBRARY_PATH=/var/home/swick/Projects/mutter/build/cogl/cogl:/var/home/swick/Projects/mutter/build/src/tests:/var/home/swick/Projects/mutter/build/mtk/mtk:/var/home/swick/Projects/mutter/build/clutter/clutter:/var/home/swick/Projects/mutter/build/cogl/cogl-pango:/var/home/swick/Projects/mutter/build/src /var/home/swick/Projects/mutter/src/tests/meta-dbus-runner.py -- /var/home/swick/Projects/mutter/build/src/tests/cogl/conform/cogl-test-just-vertex-shader
|
||||
>>> COGL_DRIVER=gl3 G_TEST_BUILDDIR=/var/home/swick/Projects/mutter/build/src/tests/cogl/conform MALLOC_PERTURB_=83 G_TEST_SRCDIR=/var/home/swick/Projects/mutter/src/tests/cogl/conform G_ENABLE_DIAGNOSTIC=0 LD_LIBRARY_PATH=/var/home/swick/Projects/mutter/build/cogl/cogl:/var/home/swick/Projects/mutter/build/src/tests:/var/home/swick/Projects/mutter/build/mtk/mtk:/var/home/swick/Projects/mutter/build/clutter/clutter:/var/home/swick/Projects/mutter/build/src /var/home/swick/Projects/mutter/src/tests/meta-dbus-runner.py -- /var/home/swick/Projects/mutter/build/src/tests/cogl/conform/cogl-test-just-vertex-shader
|
||||
|
||||
```
|
||||
|
||||
|
@ -16,7 +16,6 @@ custom_target('clutter-doc',
|
||||
gidocgen_common_args,
|
||||
'--add-include-path=@0@'.format(meson.current_build_dir() / '../../../mtk/mtk'),
|
||||
'--add-include-path=@0@'.format(meson.current_build_dir() / '../../../cogl/cogl'),
|
||||
'--add-include-path=@0@'.format(meson.current_build_dir() / '../../../cogl/cogl-pango'),
|
||||
'--config=@INPUT0@',
|
||||
'--output-dir=@OUTPUT@',
|
||||
'--content-dir=@0@'.format(meson.current_source_dir()),
|
||||
@ -24,7 +23,6 @@ custom_target('clutter-doc',
|
||||
],
|
||||
depends: [
|
||||
libmutter_mtk_gir[0],
|
||||
libmutter_cogl_pango_gir[0],
|
||||
libmutter_cogl_gir[0],
|
||||
],
|
||||
build_by_default: true,
|
||||
|
@ -1,46 +0,0 @@
|
||||
[library]
|
||||
version = "@version@"
|
||||
browse_url = "https://gitlab.gnome.org/GNOME/mutter/"
|
||||
repository_url = "https://gitlab.gnome.org/GNOME/mutter.git"
|
||||
website_url = "https://blogs.gnome.org/shell-dev/"
|
||||
docs_url = "https://mutter.gnome.org/"
|
||||
logo_url = "logo.svg"
|
||||
authors = "Mutter Development Team"
|
||||
license = "GPL-2.0-or-later"
|
||||
description = "A Low Level GPU Graphics and Utilities API"
|
||||
dependencies = [ "GObject-2.0", "Pango-1.0", "PangoCairo-1.0" ]
|
||||
devhelp = true
|
||||
search_index = true
|
||||
|
||||
[dependencies."GObject-2.0"]
|
||||
name = "GObject"
|
||||
description = "The base type system library"
|
||||
docs_url = "https://docs.gtk.org/gobject/"
|
||||
|
||||
[dependencies."Pango-1.0"]
|
||||
name = "Pango"
|
||||
description = "Text shaping and rendering"
|
||||
docs_url = "https://docs.gtk.org/Pango/"
|
||||
|
||||
[dependencies."PangoCairo-1.0"]
|
||||
name = "PangoCairo"
|
||||
description = "Cairo support for Pango"
|
||||
docs_url = "https://docs.gtk.org/PangoCairo/"
|
||||
|
||||
[theme]
|
||||
name = "basic"
|
||||
show_index_summary = true
|
||||
show_class_hierarchy = true
|
||||
|
||||
[source-location]
|
||||
base_url = "https://gitlab.gnome.org/GNOME/mutter/-/blob/@vcs_tag@/"
|
||||
|
||||
[extra]
|
||||
# The same order will be used when generating the index
|
||||
content_files = [
|
||||
]
|
||||
content_images = [
|
||||
"logo.svg",
|
||||
]
|
||||
urlmap_file = "urlmap.js"
|
||||
|
@ -1 +0,0 @@
|
||||
../../../logo.svg
|
@ -1,30 +0,0 @@
|
||||
|
||||
cogl_pango_toml = configure_file(
|
||||
input: 'cogl-pango.toml.in',
|
||||
output: 'cogl-pango.toml',
|
||||
configuration: toml_conf,
|
||||
install: true,
|
||||
install_dir: docs_dir / 'cogl-pango',
|
||||
)
|
||||
|
||||
custom_target('cogl-pango-doc',
|
||||
input: [ cogl_pango_toml, libmutter_cogl_pango_gir[0] ],
|
||||
output: 'cogl-pango',
|
||||
command: [
|
||||
gidocgen,
|
||||
'generate',
|
||||
gidocgen_common_args,
|
||||
'--add-include-path=@0@'.format(meson.current_build_dir() / '../../../mtk/mtk'),
|
||||
'--add-include-path=@0@'.format(meson.current_build_dir() / '../../../cogl/cogl'),
|
||||
'--config=@INPUT0@',
|
||||
'--output-dir=@OUTPUT@',
|
||||
'--content-dir=@0@'.format(meson.current_source_dir()),
|
||||
'@INPUT1@',
|
||||
],
|
||||
depends: [
|
||||
libmutter_cogl_gir[0],
|
||||
],
|
||||
build_by_default: true,
|
||||
install: true,
|
||||
install_dir: docs_dir,
|
||||
)
|
@ -1,10 +0,0 @@
|
||||
// SPDX-FileCopyrightText: 2021 GNOME Foundation
|
||||
// SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
// A map between namespaces and base URLs for their online documentation
|
||||
baseURLs = [
|
||||
[ 'GObject', 'https://docs.gtk.org/gobject/' ],
|
||||
[ 'Pango', 'https://docs.gtk.org/Pango/' ],
|
||||
[ 'PangoCairo', 'https://docs.gtk.org/PangoCairo/' ],
|
||||
[ 'Cogl', 'https://mutter.gnome.org/cogl/' ],
|
||||
]
|
@ -22,6 +22,5 @@ docs_dir = pkgdatadir / 'doc'
|
||||
|
||||
subdir('clutter')
|
||||
subdir('cogl')
|
||||
subdir('cogl-pango')
|
||||
subdir('meta')
|
||||
subdir('mtk')
|
||||
|
@ -17,7 +17,6 @@ custom_target('meta-doc',
|
||||
'--add-include-path=@0@'.format(meson.current_build_dir() / '../../../mtk/mtk'),
|
||||
'--add-include-path=@0@'.format(meson.current_build_dir() / '../../../clutter/clutter'),
|
||||
'--add-include-path=@0@'.format(meson.current_build_dir() / '../../../cogl/cogl'),
|
||||
'--add-include-path=@0@'.format(meson.current_build_dir() / '../../../cogl/cogl-pango'),
|
||||
'--config=@INPUT0@',
|
||||
'--output-dir=@OUTPUT@',
|
||||
'--content-dir=@0@'.format(meson.current_source_dir()),
|
||||
@ -26,7 +25,6 @@ custom_target('meta-doc',
|
||||
depends: [
|
||||
libmutter_mtk_gir[0],
|
||||
libmutter_clutter_gir[0],
|
||||
libmutter_cogl_pango_gir[0],
|
||||
libmutter_cogl_gir[0],
|
||||
],
|
||||
build_by_default: true,
|
||||
|
@ -114,11 +114,6 @@
|
||||
importing and drawing textures, internally using OpenGL.</p>
|
||||
</a></li>
|
||||
|
||||
<li><a href="https://mutter.gnome.org/cogl-pango/">
|
||||
<h3>CoglPango</h3>
|
||||
<p>A Low Level GPU Graphics and Utilities API.</p>
|
||||
</a></li>
|
||||
|
||||
<li><a href="https://mutter.gnome.org/mtk/">
|
||||
<h3>Mtk</h3>
|
||||
<p>The Meta Toolkit containing utilities shared by other parts of mutter.</p>
|
||||
|
@ -1306,7 +1306,6 @@ if have_introspection
|
||||
'GObject-2.0',
|
||||
'GDesktopEnums-3.0',
|
||||
libmutter_cogl_gir[0],
|
||||
libmutter_cogl_pango_gir[0],
|
||||
libmutter_clutter_gir[0],
|
||||
libmutter_mtk_gir[0],
|
||||
]
|
||||
|
@ -30,7 +30,7 @@ create_pipeline (CoglTexture **tex_out,
|
||||
0, /* layer */
|
||||
COGL_PIPELINE_WRAP_MODE_CLAMP_TO_EDGE);
|
||||
|
||||
/* This is the layer combine used by cogl-pango */
|
||||
/* This is the layer combine used by clutter text rendering */
|
||||
cogl_pipeline_set_layer_combine (pipeline,
|
||||
0, /* layer */
|
||||
"RGBA = MODULATE (PREVIOUS, TEXTURE[A])",
|
||||
|
@ -95,7 +95,6 @@ if have_introspection
|
||||
'xfixes-4.0',
|
||||
libmutter_mtk_gir[0],
|
||||
libmutter_cogl_gir[0],
|
||||
libmutter_cogl_pango_gir[0],
|
||||
libmutter_clutter_gir[0],
|
||||
libmutter_gir[0],
|
||||
],
|
||||
|
Loading…
x
Reference in New Issue
Block a user