Compare commits
59 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c476c45007 | |||
| 5d05270ca7 | |||
| 34fb85afd1 | |||
| 05bc4a86c7 | |||
| 93302cc42d | |||
| 976f45e614 | |||
| befccc943a | |||
| ee5afdf919 | |||
| 49a6b5d50a | |||
| dd7a0cbeb7 | |||
| 38d808f3e2 | |||
| 16a608b9e5 | |||
| f1ff37e970 | |||
| 71c68f5f36 | |||
| 0d3265edc7 | |||
| 854e40c60c | |||
| 06f3b5dfd4 | |||
| 05acb70d1c | |||
| 7b380b2ffc | |||
| f6e4b964b7 | |||
| 0b2d08f076 | |||
| 1ad1a9fe4a | |||
| fe15db92bd | |||
| 682b7773fc | |||
| 9055b6c6e5 | |||
| 9fd56dc5ad | |||
| 1ec7f2bbcd | |||
| 4eb7208e35 | |||
| 1ad88f7662 | |||
| 96b30073cf | |||
| 456956a2bd | |||
| 4c794505da | |||
| f627c9443e | |||
| 06fa9befe0 | |||
| a95dc5d609 | |||
| 2abe588e91 | |||
| ecdee288a7 | |||
| e363fcca3c | |||
| f46fb7c6fc | |||
| 985d964a34 | |||
| 2a0286c19c | |||
| 9a05af61e8 | |||
| 68d2e9c068 | |||
| 89ba937fd3 | |||
| 840cd6f10f | |||
| cccfc1a38d | |||
| ff26aa2fa7 | |||
| 7192e67a6f | |||
| 5354b91e64 | |||
| c9c6b7bb2a | |||
| c93fa922dc | |||
| 8d7bfa2628 | |||
| e6a4cc8ba2 | |||
| 7926ee68b8 | |||
| 239d47791d | |||
| 33f210bc85 | |||
| 021aae84dd | |||
| e8508762f5 | |||
| a0bbdfbeee |
@@ -1,4 +1,4 @@
|
||||
Overview of Changes in 4.13.8, 20-02-2024
|
||||
Overview of Changes in 4.13.9, xx-xx-xxxx
|
||||
=========================================
|
||||
|
||||
Note: The new renderers and dmabuf support are using graphics drivers
|
||||
@@ -7,6 +7,10 @@ in different ways than the old gl renderer, and trigger new driver bugs,
|
||||
https://gitlab.gnome.org/GNOME/gtk/-/issues/6388). Therefore, it is
|
||||
recommended to use the latest mesa release (24.0) with the new renderers.
|
||||
|
||||
|
||||
Overview of Changes in 4.13.8, 20-02-2024
|
||||
=========================================
|
||||
|
||||
* Accessibility:
|
||||
- Add a GtkAccessibleText interface for allowing 3rd party
|
||||
text widgets (notably vte) to be accessible
|
||||
|
||||
@@ -13,6 +13,7 @@ SYNOPSIS
|
||||
| **gtk4-rendernode-tool** <COMMAND> [OPTIONS...] <FILE>
|
||||
|
|
||||
| **gtk4-rendernode-tool** benchmark [OPTIONS...] <FILE>
|
||||
| **gtk4-rendernode-tool** compare [OPTIONS...] <FILE1> <FILE2>
|
||||
| **gtk4-rendernode-tool** info [OPTIONS...] <FILE>
|
||||
| **gtk4-rendernode-tool** render [OPTIONS...] <FILE> [<FILE>]
|
||||
| **gtk4-rendernode-tool** show [OPTIONS...] <FILE>
|
||||
@@ -75,7 +76,21 @@ and prints the runtimes.
|
||||
the execution of the commands on the GPU. It can be useful to use this flag to test
|
||||
command submission performance.
|
||||
|
||||
Compare
|
||||
^^^^^^^
|
||||
|
||||
The ``compare`` command compares the rendering of a node with a reference image,
|
||||
or the renderings of two nodes, or two images. If any differences are found, the
|
||||
exit code is 1. If the images are identical, it is 0.
|
||||
|
||||
``--renderer=RENDERER``
|
||||
|
||||
Use the given renderer.
|
||||
|
||||
``--output=FILE``
|
||||
|
||||
Save the differences as a png image in ``FILE``.
|
||||
|
||||
``--quiet``
|
||||
|
||||
Don't write results to stdout.`
|
||||
|
||||
+177
-42
@@ -309,67 +309,202 @@ typedef enum
|
||||
* The color values are premultiplied with the alpha value.
|
||||
* @GDK_MEMORY_R8G8B8A8_PREMULTIPLIED: 4 bytes; for red, green, blue, alpha
|
||||
* The color values are premultiplied with the alpha value.
|
||||
* @GDK_MEMORY_A8B8G8R8_PREMULTIPLIED: 4 bytes; for alpha, blue, green, red,
|
||||
* The color values are premultiplied with the alpha value. Since 4.14
|
||||
* @GDK_MEMORY_B8G8R8A8: 4 bytes; for blue, green, red, alpha.
|
||||
* @GDK_MEMORY_A8R8G8B8: 4 bytes; for alpha, red, green, blue.
|
||||
* @GDK_MEMORY_R8G8B8A8: 4 bytes; for red, green, blue, alpha.
|
||||
* @GDK_MEMORY_A8B8G8R8: 4 bytes; for alpha, blue, green, red.
|
||||
* @GDK_MEMORY_B8G8R8X8: 4 bytes; for blue, green, red, unused. Since 4.14
|
||||
* @GDK_MEMORY_X8R8G8B8: 4 bytes; for unused, red, green, blue. Since 4.14
|
||||
* @GDK_MEMORY_R8G8B8X8: 4 bytes; for red, green, blue, unused. Since 4.14
|
||||
* @GDK_MEMORY_X8B8G8R8: 4 bytes; for unused, blue, green, red. Since 4.14
|
||||
* @GDK_MEMORY_R8G8B8: 3 bytes; for red, green, blue. The data is opaque.
|
||||
* @GDK_MEMORY_B8G8R8: 3 bytes; for blue, green, red. The data is opaque.
|
||||
* @GDK_MEMORY_R16G16B16: 3 guint16 values; for red, green, blue. Since: 4.6
|
||||
* @GDK_MEMORY_R16G16B16A16_PREMULTIPLIED: 4 guint16 values; for red, green,
|
||||
* blue, alpha. The color values are premultiplied with the alpha value.
|
||||
* Since: 4.6
|
||||
* @GDK_MEMORY_R16G16B16A16: 4 guint16 values; for red, green, blue, alpha.
|
||||
* Since: 4.6
|
||||
* @GDK_MEMORY_R16G16B16_FLOAT: 3 half-float values; for red, green, blue.
|
||||
* The data is opaque. Since: 4.6
|
||||
* @GDK_MEMORY_R16G16B16A16_FLOAT_PREMULTIPLIED: 4 half-float values; for
|
||||
* red, green, blue and alpha. The color values are premultiplied with
|
||||
* the alpha value. Since: 4.6
|
||||
* @GDK_MEMORY_R16G16B16A16_FLOAT: 4 half-float values; for red, green,
|
||||
* blue and alpha. Since: 4.6
|
||||
* @GDK_MEMORY_B32G32R32_FLOAT: 3 float values; for blue, green, red.
|
||||
* The data is opaque. Since: 4.6
|
||||
* @GDK_MEMORY_R32G32B32A32_FLOAT_PREMULTIPLIED: 4 float values; for
|
||||
* red, green, blue and alpha. The color values are premultiplied with
|
||||
* the alpha value. Since: 4.6
|
||||
* @GDK_MEMORY_R32G32B32A32_FLOAT: 4 float values; for red, green, blue and
|
||||
* alpha. Since: 4.6
|
||||
* @GDK_MEMORY_G8A8_PREMULTIPLIED: 2 bytes; for grayscale, alpha. The color
|
||||
* values are premultiplied with the alpha value. Since: 4.12
|
||||
* @GDK_MEMORY_G8A8: 2 bytes; for grayscale, alpha. Since: 4.12
|
||||
* @GDK_MEMORY_G8: One byte; for grayscale. The data is opaque.
|
||||
* Since: 4.12
|
||||
* @GDK_MEMORY_G16A16_PREMULTIPLIED: 2 guint16 values; for grayscale, alpha.
|
||||
* The color values are premultiplied with the alpha value. Since: 4.12
|
||||
* @GDK_MEMORY_G16A16: 2 guint16 values; for grayscale, alpha. Since: 4.12
|
||||
* @GDK_MEMORY_G16: One guint16 value; for grayscale. The data is opaque.
|
||||
* Since: 4.12
|
||||
* @GDK_MEMORY_A8: One byte; for alpha.
|
||||
* Since: 4.12
|
||||
* @GDK_MEMORY_A16: One guint16 value; for alpha.
|
||||
* Since: 4.12
|
||||
* @GDK_MEMORY_N_FORMATS: The number of formats. This value will change as
|
||||
* more formats get added, so do not rely on its concrete integer.
|
||||
* @GDK_MEMORY_R32G32B32_FLOAT: 3 float values; for red, green, blue.
|
||||
*
|
||||
* `GdkMemoryFormat` describes formats that image data can have in memory.
|
||||
*
|
||||
* It describes formats by listing the contents of the memory passed to it.
|
||||
* So GDK_MEMORY_A8R8G8B8 will be 1 byte (8 bits) of alpha, followed by a
|
||||
* So `GDK_MEMORY_A8R8G8B8` will be 1 byte (8 bits) of alpha, followed by a
|
||||
* byte each of red, green and blue. It is not endian-dependent, so
|
||||
* CAIRO_FORMAT_ARGB32 is represented by different `GdkMemoryFormats`
|
||||
* `CAIRO_FORMAT_ARGB32` is represented by different `GdkMemoryFormats`
|
||||
* on architectures with different endiannesses.
|
||||
*
|
||||
* Its naming is modelled after
|
||||
* [VkFormat](https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkFormat)
|
||||
* for details).
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_A8B8G8R8_PREMULTIPLIED:
|
||||
*
|
||||
* 4 bytes; for alpha, blue, green, red, The color values are premultiplied with
|
||||
* the alpha value.
|
||||
*
|
||||
* Since: 4.14
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_B8G8R8X8:
|
||||
*
|
||||
* 4 bytes; for blue, green, red, unused.
|
||||
*
|
||||
* Since: 4.14
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_X8R8G8B8:
|
||||
*
|
||||
* 4 bytes; for unused, red, green, blue.
|
||||
*
|
||||
* Since: 4.14
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_R8G8B8X8:
|
||||
*
|
||||
* 4 bytes; for red, green, blue, unused.
|
||||
*
|
||||
* Since: 4.14
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_X8B8G8R8:
|
||||
*
|
||||
* 4 bytes; for unused, blue, green, red.
|
||||
*
|
||||
* Since: 4.14
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_R16G16B16:
|
||||
*
|
||||
* 3 guint16 values; for red, green, blue.
|
||||
*
|
||||
* Since: 4.6
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_R16G16B16A16_PREMULTIPLIED:
|
||||
*
|
||||
* 4 guint16 values; for red, green, blue, alpha. The color values are
|
||||
* premultiplied with the alpha value.
|
||||
*
|
||||
* Since: 4.6
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_R16G16B16A16:
|
||||
*
|
||||
* 4 guint16 values; for red, green, blue, alpha.
|
||||
*
|
||||
* Since: 4.6
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_R16G16B16_FLOAT:
|
||||
*
|
||||
* 3 half-float values; for red, green, blue. The data is opaque.
|
||||
*
|
||||
* Since: 4.6
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_R16G16B16A16_FLOAT_PREMULTIPLIED:
|
||||
*
|
||||
* 4 half-float values; for red, green, blue and alpha. The color values are
|
||||
* premultiplied with the alpha value.
|
||||
*
|
||||
* Since: 4.6
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_R16G16B16A16_FLOAT:
|
||||
*
|
||||
* 4 half-float values; for red, green, blue and alpha.
|
||||
*
|
||||
* Since: 4.6
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_B32G32R32_FLOAT:
|
||||
*
|
||||
* 3 float values; for blue, green, red. The data is opaque.
|
||||
*
|
||||
* Since: 4.6
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_R32G32B32A32_FLOAT_PREMULTIPLIED:
|
||||
*
|
||||
* 4 float values; for red, green, blue and alpha. The color values are
|
||||
* premultiplied with the alpha value.
|
||||
*
|
||||
* Since: 4.6
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_R32G32B32A32_FLOAT:
|
||||
*
|
||||
* 4 float values; for red, green, blue and alpha.
|
||||
*
|
||||
* Since: 4.6
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_G8A8_PREMULTIPLIED:
|
||||
*
|
||||
* 2 bytes; for grayscale, alpha. The color values are premultiplied with the
|
||||
* alpha value.
|
||||
*
|
||||
* Since: 4.12
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_G8A8:
|
||||
*
|
||||
* 2 bytes; for grayscale, alpha.
|
||||
*
|
||||
* Since: 4.12
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_G8:
|
||||
*
|
||||
* One byte; for grayscale. The data is opaque.
|
||||
*
|
||||
* Since: 4.12
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_G16A16_PREMULTIPLIED:
|
||||
*
|
||||
* 2 guint16 values; for grayscale, alpha. The color values are premultiplied
|
||||
* with the alpha value.
|
||||
*
|
||||
* Since: 4.12
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_G16A16:
|
||||
*
|
||||
* 2 guint16 values; for grayscale, alpha.
|
||||
*
|
||||
* Since: 4.12
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_G16:
|
||||
*
|
||||
* One guint16 value; for grayscale. The data is opaque.
|
||||
*
|
||||
* Since: 4.12
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_A8:
|
||||
*
|
||||
* One byte; for alpha.
|
||||
*
|
||||
* Since: 4.12
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_A16:
|
||||
*
|
||||
* One guint16 value; for alpha.
|
||||
*
|
||||
* Since: 4.12
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_A16_FLOAT:
|
||||
*
|
||||
* One half-float value; for alpha.
|
||||
*
|
||||
* Since: 4.12
|
||||
*/
|
||||
/**
|
||||
* GDK_MEMORY_A32_FLOAT:
|
||||
*
|
||||
* One float value; for alpha.
|
||||
*
|
||||
* Since: 4.12
|
||||
*/
|
||||
typedef enum {
|
||||
GDK_MEMORY_B8G8R8A8_PREMULTIPLIED,
|
||||
GDK_MEMORY_A8R8G8B8_PREMULTIPLIED,
|
||||
|
||||
@@ -266,10 +266,10 @@ _XcursorReadUInt (XcursorFile *file, XcursorUInt *u)
|
||||
|
||||
if ((*file->read) (file, bytes, 4) != 4)
|
||||
return XcursorFalse;
|
||||
*u = ((bytes[0] << 0) |
|
||||
(bytes[1] << 8) |
|
||||
(bytes[2] << 16) |
|
||||
(bytes[3] << 24));
|
||||
*u = ((((unsigned int)(bytes[0])) << 0) |
|
||||
(((unsigned int)(bytes[1])) << 8) |
|
||||
(((unsigned int)(bytes[2])) << 16) |
|
||||
(((unsigned int)(bytes[3])) << 24));
|
||||
return XcursorTrue;
|
||||
}
|
||||
|
||||
|
||||
@@ -2437,12 +2437,13 @@ apply_monitor_change (GdkWaylandMonitor *monitor)
|
||||
gboolean needs_scaling = FALSE;
|
||||
double scale;
|
||||
|
||||
if (monitor->xdg_output_done)
|
||||
if (monitor_has_xdg_output (monitor) &&
|
||||
monitor->xdg_output_geometry.width != 0 &&
|
||||
monitor->xdg_output_geometry.height != 0)
|
||||
{
|
||||
logical_geometry = monitor->xdg_output_geometry;
|
||||
needs_scaling =
|
||||
logical_geometry.width == monitor->output_geometry.width ||
|
||||
logical_geometry.height == monitor->output_geometry.height;
|
||||
needs_scaling = logical_geometry.width == monitor->output_geometry.width &&
|
||||
logical_geometry.height == monitor->output_geometry.height;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2453,6 +2454,7 @@ apply_monitor_change (GdkWaylandMonitor *monitor)
|
||||
if (needs_scaling)
|
||||
{
|
||||
int scale_factor = gdk_monitor_get_scale_factor (GDK_MONITOR (monitor));
|
||||
|
||||
logical_geometry.y /= scale_factor;
|
||||
logical_geometry.x /= scale_factor;
|
||||
logical_geometry.width /= scale_factor;
|
||||
|
||||
@@ -1430,6 +1430,8 @@ gdk_x11_display_open (const char *display_name)
|
||||
int maj, min;
|
||||
char *cm_name;
|
||||
gboolean frame_extents;
|
||||
gboolean rgba;
|
||||
gboolean composited;
|
||||
|
||||
XInitThreads ();
|
||||
|
||||
@@ -1646,7 +1648,10 @@ gdk_x11_display_open (const char *display_name)
|
||||
|
||||
frame_extents = gdk_x11_screen_supports_net_wm_hint (gdk_x11_display_get_screen (display),
|
||||
g_intern_static_string ("_GTK_FRAME_EXTENTS"));
|
||||
gdk_display_set_shadow_width (display, frame_extents);
|
||||
rgba = gdk_display_is_rgba (display);
|
||||
composited = gdk_display_is_composited (display);
|
||||
|
||||
gdk_display_set_shadow_width (display, frame_extents && rgba && composited);
|
||||
|
||||
gdk_display_emit_opened (display);
|
||||
|
||||
|
||||
+137
-44
@@ -11,6 +11,7 @@
|
||||
#include "gdk/gdkprofilerprivate.h"
|
||||
|
||||
#include "gsk/gskdebugprivate.h"
|
||||
#include "gsk/gskprivate.h"
|
||||
|
||||
#define MAX_SLICES_PER_ATLAS 64
|
||||
|
||||
@@ -32,6 +33,37 @@ typedef struct _GskGpuCachedGlyph GskGpuCachedGlyph;
|
||||
typedef struct _GskGpuCachedTexture GskGpuCachedTexture;
|
||||
typedef struct _GskGpuDevicePrivate GskGpuDevicePrivate;
|
||||
|
||||
typedef struct {
|
||||
PangoFont *font;
|
||||
float scale;
|
||||
} FontCacheKey;
|
||||
|
||||
typedef struct {
|
||||
PangoGlyph glyph;
|
||||
GskGpuGlyphLookupFlags flags;
|
||||
} GlyphCacheKey;
|
||||
|
||||
typedef struct {
|
||||
FontCacheKey key;
|
||||
|
||||
GHashTable *cache;
|
||||
} FontGlyphCache;
|
||||
|
||||
static void
|
||||
font_glyph_cache_free (gpointer data)
|
||||
{
|
||||
FontGlyphCache *cache = data;
|
||||
|
||||
g_object_unref (cache->key.font);
|
||||
g_hash_table_unref (cache->cache);
|
||||
g_free (cache);
|
||||
}
|
||||
|
||||
static FontGlyphCache no_font_cache = {
|
||||
.key = { .font = NULL, .scale = -1 },
|
||||
.cache = NULL
|
||||
};
|
||||
|
||||
struct _GskGpuDevicePrivate
|
||||
{
|
||||
GdkDisplay *display;
|
||||
@@ -44,6 +76,7 @@ struct _GskGpuDevicePrivate
|
||||
|
||||
GHashTable *texture_cache;
|
||||
GHashTable *glyph_cache;
|
||||
FontGlyphCache *last_font_cache;
|
||||
|
||||
GskGpuCachedAtlas *current_atlas;
|
||||
|
||||
@@ -68,14 +101,15 @@ struct _GskGpuCachedClass
|
||||
struct _GskGpuCached
|
||||
{
|
||||
const GskGpuCachedClass *class;
|
||||
|
||||
GskGpuCachedAtlas *atlas;
|
||||
GskGpuCached *next;
|
||||
GskGpuCached *prev;
|
||||
|
||||
gint64 timestamp;
|
||||
gboolean stale;
|
||||
guint pixels; /* For glyphs and textures, pixels. For atlases, dead pixels */
|
||||
|
||||
unsigned int stale : 1;
|
||||
unsigned int pixels : 31; /* For glyphs and textures, pixels. For atlases, dead pixels */
|
||||
|
||||
};
|
||||
|
||||
static inline void
|
||||
@@ -360,10 +394,8 @@ struct _GskGpuCachedGlyph
|
||||
{
|
||||
GskGpuCached parent;
|
||||
|
||||
PangoFont *font;
|
||||
PangoGlyph glyph;
|
||||
GskGpuGlyphLookupFlags flags;
|
||||
float scale;
|
||||
FontGlyphCache *font_cache;
|
||||
GlyphCacheKey glyph_key;
|
||||
|
||||
GskGpuImage *image;
|
||||
graphene_rect_t bounds;
|
||||
@@ -376,10 +408,17 @@ gsk_gpu_cached_glyph_free (GskGpuDevice *device,
|
||||
{
|
||||
GskGpuDevicePrivate *priv = gsk_gpu_device_get_instance_private (device);
|
||||
GskGpuCachedGlyph *self = (GskGpuCachedGlyph *) cached;
|
||||
FontGlyphCache *font_cache;
|
||||
|
||||
g_hash_table_remove (priv->glyph_cache, self);
|
||||
font_cache = self->font_cache;
|
||||
g_hash_table_remove (font_cache->cache, self);
|
||||
if (g_hash_table_size (font_cache->cache) == 0)
|
||||
{
|
||||
if (priv->last_font_cache == font_cache)
|
||||
priv->last_font_cache = &no_font_cache;
|
||||
g_hash_table_remove (priv->glyph_cache, font_cache);
|
||||
}
|
||||
|
||||
g_object_unref (self->font);
|
||||
g_object_unref (self->image);
|
||||
|
||||
g_free (self);
|
||||
@@ -402,15 +441,35 @@ gsk_gpu_cached_glyph_should_collect (GskGpuDevice *device,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static guint
|
||||
gsk_gpu_cached_font_hash (gconstpointer data)
|
||||
{
|
||||
const FontGlyphCache *cache = data;
|
||||
const FontCacheKey *key = &cache->key;
|
||||
|
||||
return GPOINTER_TO_UINT (key->font) ^ ((guint) key->scale * PANGO_SCALE);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gsk_gpu_cached_font_equal (gconstpointer v1,
|
||||
gconstpointer v2)
|
||||
{
|
||||
const FontGlyphCache *c1 = v1;
|
||||
const FontCacheKey *key1 = &c1->key;
|
||||
const FontGlyphCache *c2 = v2;
|
||||
const FontCacheKey *key2 = &c2->key;
|
||||
|
||||
return key1->font == key2->font &&
|
||||
key1->scale == key2->scale;
|
||||
}
|
||||
|
||||
static guint
|
||||
gsk_gpu_cached_glyph_hash (gconstpointer data)
|
||||
{
|
||||
const GskGpuCachedGlyph *glyph = data;
|
||||
const GlyphCacheKey *key = &glyph->glyph_key;
|
||||
|
||||
return GPOINTER_TO_UINT (glyph->font) ^
|
||||
glyph->glyph ^
|
||||
(glyph->flags << 24) ^
|
||||
((guint) glyph->scale * PANGO_SCALE);
|
||||
return key->glyph ^ (key->flags << 24);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -419,11 +478,11 @@ gsk_gpu_cached_glyph_equal (gconstpointer v1,
|
||||
{
|
||||
const GskGpuCachedGlyph *glyph1 = v1;
|
||||
const GskGpuCachedGlyph *glyph2 = v2;
|
||||
const GlyphCacheKey *key1 = &glyph1->glyph_key;
|
||||
const GlyphCacheKey *key2 = &glyph2->glyph_key;
|
||||
|
||||
return glyph1->font == glyph2->font
|
||||
&& glyph1->glyph == glyph2->glyph
|
||||
&& glyph1->flags == glyph2->flags
|
||||
&& glyph1->scale == glyph2->scale;
|
||||
return key1->glyph == key2->glyph &&
|
||||
key1->flags == key2->flags;
|
||||
}
|
||||
|
||||
static const GskGpuCachedClass GSK_GPU_CACHED_GLYPH_CLASS =
|
||||
@@ -622,10 +681,13 @@ gsk_gpu_device_init (GskGpuDevice *self)
|
||||
{
|
||||
GskGpuDevicePrivate *priv = gsk_gpu_device_get_instance_private (self);
|
||||
|
||||
priv->glyph_cache = g_hash_table_new (gsk_gpu_cached_glyph_hash,
|
||||
gsk_gpu_cached_glyph_equal);
|
||||
priv->glyph_cache = g_hash_table_new_full (gsk_gpu_cached_font_hash,
|
||||
gsk_gpu_cached_font_equal,
|
||||
NULL,
|
||||
font_glyph_cache_free);
|
||||
priv->texture_cache = g_hash_table_new (g_direct_hash,
|
||||
g_direct_equal);
|
||||
priv->last_font_cache = &no_font_cache;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -889,40 +951,71 @@ gsk_gpu_device_lookup_glyph_image (GskGpuDevice *self,
|
||||
GskGpuGlyphLookupFlags flags,
|
||||
float scale,
|
||||
graphene_rect_t *out_bounds,
|
||||
graphene_point_t *out_origin)
|
||||
graphene_point_t *out_origin,
|
||||
PangoFont **out_scaled_font)
|
||||
{
|
||||
GskGpuDevicePrivate *priv = gsk_gpu_device_get_instance_private (self);
|
||||
GskGpuCachedGlyph lookup = {
|
||||
.font = font,
|
||||
.glyph = glyph,
|
||||
.flags = flags,
|
||||
.scale = scale
|
||||
FontGlyphCache font_lookup = {
|
||||
.key = { .font = font, .scale = scale }
|
||||
};
|
||||
GskGpuCachedGlyph *cache;
|
||||
GskGpuCachedGlyph glyph_lookup = {
|
||||
.glyph_key = { .glyph = glyph, .flags = flags }
|
||||
};
|
||||
FontGlyphCache *font_cache = NULL;
|
||||
GskGpuCachedGlyph *cache = NULL;
|
||||
PangoRectangle ink_rect;
|
||||
graphene_rect_t rect;
|
||||
graphene_point_t origin;
|
||||
GskGpuImage *image;
|
||||
gsize atlas_x, atlas_y, padding;
|
||||
float subpixel_x, subpixel_y;
|
||||
PangoFont *scaled_font;
|
||||
|
||||
cache = g_hash_table_lookup (priv->glyph_cache, &lookup);
|
||||
if (cache)
|
||||
if (priv->last_font_cache->key.font == font &&
|
||||
priv->last_font_cache->key.scale == scale)
|
||||
font_cache = priv->last_font_cache;
|
||||
else
|
||||
font_cache = g_hash_table_lookup (priv->glyph_cache, &font_lookup);
|
||||
|
||||
if (font_cache)
|
||||
{
|
||||
gsk_gpu_cached_use (self, (GskGpuCached *) cache, gsk_gpu_frame_get_timestamp (frame));
|
||||
cache = g_hash_table_lookup (font_cache->cache, &glyph_lookup);
|
||||
if (cache)
|
||||
{
|
||||
gsk_gpu_cached_use (self, (GskGpuCached *) cache, gsk_gpu_frame_get_timestamp (frame));
|
||||
|
||||
*out_bounds = cache->bounds;
|
||||
*out_origin = cache->origin;
|
||||
return cache->image;
|
||||
*out_bounds = cache->bounds;
|
||||
*out_origin = cache->origin;
|
||||
|
||||
priv->last_font_cache = font_cache;
|
||||
|
||||
return cache->image;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
font_cache = g_new (FontGlyphCache, 1);
|
||||
font_cache->key.font = g_object_ref (font);
|
||||
font_cache->key.scale = scale;
|
||||
font_cache->cache = g_hash_table_new (gsk_gpu_cached_glyph_hash,
|
||||
gsk_gpu_cached_glyph_equal);
|
||||
g_hash_table_insert (priv->glyph_cache, font_cache, font_cache);
|
||||
}
|
||||
|
||||
priv->last_font_cache = font_cache;
|
||||
|
||||
if (*out_scaled_font)
|
||||
scaled_font = *out_scaled_font;
|
||||
else
|
||||
scaled_font = gsk_get_scaled_font (font, scale);
|
||||
|
||||
subpixel_x = (flags & 3) / 4.f;
|
||||
subpixel_y = ((flags >> 2) & 3) / 4.f;
|
||||
pango_font_get_glyph_extents (font, glyph, &ink_rect, NULL);
|
||||
origin.x = floor (ink_rect.x * scale / PANGO_SCALE + subpixel_x);
|
||||
origin.y = floor (ink_rect.y * scale / PANGO_SCALE + subpixel_y);
|
||||
rect.size.width = ceil ((ink_rect.x + ink_rect.width) * scale / PANGO_SCALE + subpixel_x) - origin.x;
|
||||
rect.size.height = ceil ((ink_rect.y + ink_rect.height) * scale / PANGO_SCALE + subpixel_y) - origin.y;
|
||||
pango_font_get_glyph_extents (scaled_font, glyph, &ink_rect, NULL);
|
||||
origin.x = floor (ink_rect.x * 1.0 / PANGO_SCALE + subpixel_x);
|
||||
origin.y = floor (ink_rect.y * 1.0 / PANGO_SCALE + subpixel_y);
|
||||
rect.size.width = ceil ((ink_rect.x + ink_rect.width) * 1.0 / PANGO_SCALE + subpixel_x) - origin.x;
|
||||
rect.size.height = ceil ((ink_rect.y + ink_rect.height) * 1.0 / PANGO_SCALE + subpixel_y) - origin.y;
|
||||
padding = 1;
|
||||
|
||||
image = gsk_gpu_device_add_atlas_image (self,
|
||||
@@ -944,10 +1037,9 @@ gsk_gpu_device_lookup_glyph_image (GskGpuDevice *self,
|
||||
cache = gsk_gpu_cached_new (self, &GSK_GPU_CACHED_GLYPH_CLASS, NULL);
|
||||
}
|
||||
|
||||
cache->font = g_object_ref (font);
|
||||
cache->glyph = glyph;
|
||||
cache->flags = flags;
|
||||
cache->scale = scale;
|
||||
cache->font_cache = font_cache;
|
||||
cache->glyph_key.glyph = glyph;
|
||||
cache->glyph_key.flags = flags;
|
||||
cache->bounds = rect;
|
||||
cache->image = image;
|
||||
cache->origin = GRAPHENE_POINT_INIT (- origin.x + subpixel_x,
|
||||
@@ -956,7 +1048,7 @@ gsk_gpu_device_lookup_glyph_image (GskGpuDevice *self,
|
||||
|
||||
gsk_gpu_upload_glyph_op (frame,
|
||||
cache->image,
|
||||
font,
|
||||
scaled_font,
|
||||
glyph,
|
||||
&(cairo_rectangle_int_t) {
|
||||
.x = rect.origin.x - padding,
|
||||
@@ -964,15 +1056,16 @@ gsk_gpu_device_lookup_glyph_image (GskGpuDevice *self,
|
||||
.width = rect.size.width + 2 * padding,
|
||||
.height = rect.size.height + 2 * padding,
|
||||
},
|
||||
scale,
|
||||
&GRAPHENE_POINT_INIT (cache->origin.x + padding,
|
||||
cache->origin.y + padding));
|
||||
|
||||
g_hash_table_insert (priv->glyph_cache, cache, cache);
|
||||
g_hash_table_insert (font_cache->cache, cache, cache);
|
||||
gsk_gpu_cached_use (self, (GskGpuCached *) cache, gsk_gpu_frame_get_timestamp (frame));
|
||||
|
||||
*out_bounds = cache->bounds;
|
||||
*out_origin = cache->origin;
|
||||
*out_scaled_font = scaled_font;
|
||||
|
||||
return cache->image;
|
||||
}
|
||||
|
||||
|
||||
@@ -96,7 +96,8 @@ GskGpuImage * gsk_gpu_device_lookup_glyph_image (GskGpuD
|
||||
GskGpuGlyphLookupFlags flags,
|
||||
float scale,
|
||||
graphene_rect_t *out_bounds,
|
||||
graphene_point_t *out_origin);
|
||||
graphene_point_t *out_origin,
|
||||
PangoFont **out_scaled_font);
|
||||
|
||||
|
||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC(GskGpuDevice, g_object_unref)
|
||||
|
||||
@@ -2992,11 +2992,15 @@ gsk_gpu_node_processor_add_glyph_node (GskGpuNodeProcessor *self,
|
||||
GskGpuDevice *device;
|
||||
const PangoGlyphInfo *glyphs;
|
||||
PangoFont *font;
|
||||
PangoFont *scaled_font = NULL;
|
||||
graphene_point_t offset;
|
||||
guint i, num_glyphs;
|
||||
float scale, inv_scale;
|
||||
GdkRGBA color;
|
||||
gboolean glyph_align;
|
||||
GskGpuImage *last_image;
|
||||
guint32 descriptor = 0;
|
||||
GskGpuClip old_clip;
|
||||
|
||||
if (self->opacity < 1.0 &&
|
||||
gsk_text_node_has_color_glyphs (node))
|
||||
@@ -3005,6 +3009,10 @@ gsk_gpu_node_processor_add_glyph_node (GskGpuNodeProcessor *self,
|
||||
return;
|
||||
}
|
||||
|
||||
gsk_gpu_clip_init_copy (&old_clip, &self->clip);
|
||||
if (gsk_gpu_clip_contains_rect (&self->clip, &self->offset, &node->bounds))
|
||||
gsk_gpu_clip_init_contained (&self->clip, &node->bounds);
|
||||
|
||||
glyph_align = gsk_gpu_frame_should_optimize (self->frame, GSK_GPU_OPTIMIZE_GLYPH_ALIGN) &&
|
||||
gsk_transform_get_category (self->modelview) >= GSK_TRANSFORM_CATEGORY_2D;
|
||||
device = gsk_gpu_frame_get_device (self->frame);
|
||||
@@ -3020,12 +3028,12 @@ gsk_gpu_node_processor_add_glyph_node (GskGpuNodeProcessor *self,
|
||||
scale = MAX (graphene_vec2_get_x (&self->scale), graphene_vec2_get_y (&self->scale));
|
||||
inv_scale = 1.f / scale;
|
||||
|
||||
last_image = NULL;
|
||||
for (i = 0; i < num_glyphs; i++)
|
||||
{
|
||||
GskGpuImage *image;
|
||||
graphene_rect_t glyph_bounds, glyph_tex_rect;
|
||||
graphene_point_t glyph_offset, glyph_origin;
|
||||
guint32 descriptor;
|
||||
GskGpuGlyphLookupFlags flags;
|
||||
|
||||
glyph_origin = GRAPHENE_POINT_INIT (offset.x + (float) glyphs[i].geometry.x_offset / PANGO_SCALE,
|
||||
@@ -3051,13 +3059,20 @@ gsk_gpu_node_processor_add_glyph_node (GskGpuNodeProcessor *self,
|
||||
flags,
|
||||
scale,
|
||||
&glyph_bounds,
|
||||
&glyph_offset);
|
||||
&glyph_offset,
|
||||
&scaled_font);
|
||||
|
||||
gsk_rect_scale (&GRAPHENE_RECT_INIT (-glyph_bounds.origin.x, -glyph_bounds.origin.y, gsk_gpu_image_get_width (image), gsk_gpu_image_get_height (image)), inv_scale, inv_scale, &glyph_tex_rect);
|
||||
gsk_rect_scale (&GRAPHENE_RECT_INIT(0, 0, glyph_bounds.size.width, glyph_bounds.size.height), inv_scale, inv_scale, &glyph_bounds);
|
||||
glyph_origin = GRAPHENE_POINT_INIT (glyph_origin.x - glyph_offset.x * inv_scale,
|
||||
glyph_origin.y - glyph_offset.y * inv_scale);
|
||||
descriptor = gsk_gpu_node_processor_add_image (self, image, GSK_GPU_SAMPLER_DEFAULT);
|
||||
|
||||
if (image != last_image)
|
||||
{
|
||||
descriptor = gsk_gpu_node_processor_add_image (self, image, GSK_GPU_SAMPLER_DEFAULT);
|
||||
last_image = image;
|
||||
}
|
||||
|
||||
if (glyphs[i].attr.is_color)
|
||||
gsk_gpu_texture_op (self->frame,
|
||||
gsk_gpu_clip_get_shader_clip (&self->clip, &glyph_offset, &glyph_bounds),
|
||||
@@ -3078,6 +3093,10 @@ gsk_gpu_node_processor_add_glyph_node (GskGpuNodeProcessor *self,
|
||||
|
||||
offset.x += (float) glyphs[i].geometry.width / PANGO_SCALE;
|
||||
}
|
||||
|
||||
g_clear_object (&scaled_font);
|
||||
|
||||
gsk_gpu_clip_init_copy (&self->clip, &old_clip);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -3087,6 +3106,7 @@ gsk_gpu_node_processor_create_glyph_pattern (GskGpuPatternWriter *self,
|
||||
GskGpuDevice *device;
|
||||
const PangoGlyphInfo *glyphs;
|
||||
PangoFont *font;
|
||||
PangoFont *scaled_font = NULL;
|
||||
guint num_glyphs;
|
||||
gsize i;
|
||||
float scale, inv_scale;
|
||||
@@ -3126,12 +3146,13 @@ gsk_gpu_node_processor_create_glyph_pattern (GskGpuPatternWriter *self,
|
||||
0,
|
||||
scale,
|
||||
&glyph_bounds,
|
||||
&glyph_offset);
|
||||
&glyph_offset,
|
||||
&scaled_font);
|
||||
|
||||
if (image != last_image)
|
||||
{
|
||||
if (!gsk_gpu_pattern_writer_add_image (self, image, GSK_GPU_SAMPLER_DEFAULT, &tex_id))
|
||||
return FALSE;
|
||||
break;
|
||||
|
||||
last_image = image;
|
||||
}
|
||||
@@ -3160,7 +3181,9 @@ gsk_gpu_node_processor_create_glyph_pattern (GskGpuPatternWriter *self,
|
||||
offset.x += (float) glyphs[i].geometry.width / PANGO_SCALE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
g_clear_object (&scaled_font);
|
||||
|
||||
return i == num_glyphs;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
||||
@@ -485,7 +485,6 @@ struct _GskGpuUploadGlyphOp
|
||||
cairo_rectangle_int_t area;
|
||||
PangoFont *font;
|
||||
PangoGlyph glyph;
|
||||
float scale;
|
||||
graphene_point_t origin;
|
||||
|
||||
GskGpuBuffer *buffer;
|
||||
@@ -509,11 +508,19 @@ gsk_gpu_upload_glyph_op_print (GskGpuOp *op,
|
||||
guint indent)
|
||||
{
|
||||
GskGpuUploadGlyphOp *self = (GskGpuUploadGlyphOp *) op;
|
||||
PangoFontDescription *desc;
|
||||
char *str;
|
||||
|
||||
desc = pango_font_describe_with_absolute_size (self->font);
|
||||
str = pango_font_description_to_string (desc);
|
||||
|
||||
gsk_gpu_print_op (string, indent, "upload-glyph");
|
||||
gsk_gpu_print_int_rect (string, &self->area);
|
||||
g_string_append_printf (string, "glyph %u @ %g ", self->glyph, self->scale);
|
||||
g_string_append_printf (string, "glyph %u font %s ", self->glyph, str);
|
||||
gsk_gpu_print_newline (string);
|
||||
|
||||
g_free (str);
|
||||
pango_font_description_free (desc);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -531,7 +538,6 @@ gsk_gpu_upload_glyph_op_draw (GskGpuOp *op,
|
||||
self->area.height,
|
||||
stride);
|
||||
cairo_surface_set_device_offset (surface, self->origin.x, self->origin.y);
|
||||
cairo_surface_set_device_scale (surface, self->scale, self->scale);
|
||||
|
||||
cr = cairo_create (surface);
|
||||
cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR);
|
||||
@@ -610,7 +616,6 @@ gsk_gpu_upload_glyph_op (GskGpuFrame *frame,
|
||||
PangoFont *font,
|
||||
const PangoGlyph glyph,
|
||||
const cairo_rectangle_int_t *area,
|
||||
float scale,
|
||||
const graphene_point_t *origin)
|
||||
{
|
||||
GskGpuUploadGlyphOp *self;
|
||||
@@ -621,6 +626,5 @@ gsk_gpu_upload_glyph_op (GskGpuFrame *frame,
|
||||
self->area = *area;
|
||||
self->font = g_object_ref (font);
|
||||
self->glyph = glyph;
|
||||
self->scale = scale;
|
||||
self->origin = *origin;
|
||||
}
|
||||
|
||||
@@ -25,7 +25,6 @@ void gsk_gpu_upload_glyph_op (GskGpuF
|
||||
PangoFont *font,
|
||||
PangoGlyph glyph,
|
||||
const cairo_rectangle_int_t *area,
|
||||
float scale,
|
||||
const graphene_point_t *origin);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
#include "gskresources.h"
|
||||
#include "gskprivate.h"
|
||||
|
||||
#include <cairo.h>
|
||||
#include <pango/pangocairo.h>
|
||||
#include <math.h>
|
||||
|
||||
static gpointer
|
||||
register_resources (gpointer data)
|
||||
{
|
||||
@@ -15,3 +19,78 @@ gsk_ensure_resources (void)
|
||||
|
||||
g_once (®ister_resources_once, register_resources, NULL);
|
||||
}
|
||||
|
||||
/*< private >
|
||||
* gsk_get_scaled_font:
|
||||
* @font: a `PangoFont`
|
||||
* @scale: the scale
|
||||
*
|
||||
* Returns a font that is just like @font, at a size that
|
||||
* is multiplied by @scale.
|
||||
*
|
||||
* Returns: (transfer full): a scaled version of @font
|
||||
*/
|
||||
PangoFont *
|
||||
gsk_get_scaled_font (PangoFont *font,
|
||||
float scale)
|
||||
{
|
||||
if (scale == 1.0)
|
||||
return g_object_ref (font);
|
||||
|
||||
#if PANGO_VERSION_CHECK (1, 52, 0)
|
||||
return pango_font_map_reload_font (pango_font_get_font_map (font), font, scale, NULL, NULL);
|
||||
#else
|
||||
GHashTable *fonts;
|
||||
int key;
|
||||
PangoFont *font2;
|
||||
PangoFontDescription *desc;
|
||||
int size;
|
||||
PangoFontMap *fontmap;
|
||||
PangoContext *context;
|
||||
cairo_scaled_font_t *sf;
|
||||
cairo_font_options_t *options;
|
||||
|
||||
key = (int) roundf (scale * PANGO_SCALE);
|
||||
|
||||
fonts = (GHashTable *) g_object_get_data (G_OBJECT (font), "gsk-scaled-fonts");
|
||||
|
||||
if (fonts)
|
||||
{
|
||||
font2 = g_hash_table_lookup (fonts, GINT_TO_POINTER (key));
|
||||
if (font2)
|
||||
return g_object_ref (font2);
|
||||
}
|
||||
else
|
||||
{
|
||||
fonts = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_object_unref);
|
||||
g_object_set_data_full (G_OBJECT (font), "gsk-scaled-fonts",
|
||||
fonts, (GDestroyNotify) g_hash_table_unref);
|
||||
}
|
||||
|
||||
desc = pango_font_describe (font);
|
||||
size = pango_font_description_get_size (desc);
|
||||
|
||||
if (pango_font_description_get_size_is_absolute (desc))
|
||||
pango_font_description_set_absolute_size (desc, size * scale);
|
||||
else
|
||||
pango_font_description_set_size (desc, (int) roundf (size * scale));
|
||||
|
||||
fontmap = pango_font_get_font_map (font);
|
||||
context = pango_font_map_create_context (fontmap);
|
||||
|
||||
sf = pango_cairo_font_get_scaled_font (PANGO_CAIRO_FONT (font));
|
||||
options = cairo_font_options_create ();
|
||||
cairo_scaled_font_get_font_options (sf, options);
|
||||
pango_cairo_context_set_font_options (context, options);
|
||||
cairo_font_options_destroy (options);
|
||||
|
||||
font2 = pango_font_map_load_font (fontmap, context, desc);
|
||||
|
||||
pango_font_description_free (desc);
|
||||
g_object_unref (context);
|
||||
|
||||
g_hash_table_insert (fonts, GINT_TO_POINTER (key), font2);
|
||||
|
||||
return g_object_ref (font2);
|
||||
#endif
|
||||
}
|
||||
|
||||
+4
-1
@@ -5,7 +5,10 @@
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
void gsk_ensure_resources (void);
|
||||
void gsk_ensure_resources (void);
|
||||
|
||||
PangoFont *gsk_get_scaled_font (PangoFont *font,
|
||||
float scale);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
||||
@@ -130,9 +130,8 @@ accessible_text_handle_method (GDBusConnection *connection,
|
||||
if (text != NULL)
|
||||
{
|
||||
const char *str = g_bytes_get_data (text, NULL);
|
||||
|
||||
if (0 <= offset && offset < g_utf8_strlen (str, -1))
|
||||
ch = g_utf8_get_char (g_utf8_offset_to_pointer (str, offset));
|
||||
if (g_utf8_strlen (str, -1) > 0)
|
||||
ch = g_utf8_get_char (str);
|
||||
}
|
||||
|
||||
g_dbus_method_invocation_return_value (invocation, g_variant_new ("(i)", ch));
|
||||
|
||||
@@ -291,6 +291,9 @@ gtk_accessible_role_to_atspi_role (GtkAccessibleRole role)
|
||||
case GTK_ACCESSIBLE_ROLE_TOGGLE_BUTTON:
|
||||
return ATSPI_ROLE_TOGGLE_BUTTON;
|
||||
|
||||
case GTK_ACCESSIBLE_ROLE_TERMINAL:
|
||||
return ATSPI_ROLE_TERMINAL;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -852,7 +852,8 @@ gtk_tree_path_prepend_index (GtkTreePath *path,
|
||||
int *indices;
|
||||
path->alloc = MAX (path->alloc * 2, 1);
|
||||
indices = g_new (int, path->alloc);
|
||||
memcpy (indices + 1, path->indices, path->depth * sizeof (int));
|
||||
if (path->depth > 0)
|
||||
memcpy (indices + 1, path->indices, path->depth * sizeof (int));
|
||||
g_free (path->indices);
|
||||
path->indices = indices;
|
||||
}
|
||||
@@ -972,7 +973,8 @@ gtk_tree_path_copy (const GtkTreePath *path)
|
||||
retval->depth = path->depth;
|
||||
retval->alloc = retval->depth;
|
||||
retval->indices = g_new (int, path->alloc);
|
||||
memcpy (retval->indices, path->indices, path->depth * sizeof (int));
|
||||
if (path->depth > 0)
|
||||
memcpy (retval->indices, path->indices, path->depth * sizeof (int));
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
+74
-49
@@ -22,13 +22,15 @@
|
||||
* language-specific data.raw.json as input
|
||||
*/
|
||||
|
||||
/* The format of the generated data is: a(ausasu).
|
||||
/* The format of the generated data is: a(aussasasu).
|
||||
* Each member of the array has the following fields:
|
||||
* au - sequence of unicode codepoints. If the
|
||||
* sequence contains a 0, it marks the point
|
||||
* where skin tone modifiers should be inserted
|
||||
* s - name, e.g. "man worker"
|
||||
* as - keywords, e.g. "man", "worker"
|
||||
* s - name in english, e.g. "man worker"
|
||||
* s - name in locale
|
||||
* as - keywords in english, e.g. "man", "worker"
|
||||
* as - keywords in locale
|
||||
* u - the group that this item belongs to:
|
||||
* 0: smileys-emotion
|
||||
* 1: people-body
|
||||
@@ -77,90 +79,113 @@ main (int argc, char *argv[])
|
||||
{
|
||||
JsonParser *parser;
|
||||
JsonNode *root;
|
||||
JsonParser *parser_en;
|
||||
JsonNode *root_en;
|
||||
JsonObject *ro;
|
||||
JsonArray *array;
|
||||
JsonArray *array_en;
|
||||
JsonNode *node;
|
||||
const char *unicode;
|
||||
JsonObjectIter iter;
|
||||
GError *error = NULL;
|
||||
guint length, i;
|
||||
guint length, length_en, i;
|
||||
GVariantBuilder builder;
|
||||
GVariant *v;
|
||||
GString *s;
|
||||
GHashTable *names;
|
||||
GString *name_key;
|
||||
|
||||
if (argc != 3)
|
||||
if (argc != 4) //0 -> compiled file, 1 -> en/data.raw.json, 2 -> de/data.raw.json, 3 -> de.data
|
||||
{
|
||||
g_print ("Usage: emoji-convert INPUT OUTPUT\n");
|
||||
g_print ("Usage: emoji-convert INPUT1 INPUT2 OUTPUT\nINPUT1 should be raw json data for English\nINPUT2 should be raw json data for the locale\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
parser = json_parser_new ();
|
||||
parser_en = json_parser_new ();
|
||||
|
||||
if (!json_parser_load_from_file (parser, argv[1], &error))
|
||||
if (!json_parser_load_from_file (parser_en, argv[1], &error))
|
||||
{
|
||||
g_error ("%s", error->message);
|
||||
return 1;
|
||||
}
|
||||
if (!json_parser_load_from_file (parser, argv[2], &error))
|
||||
{
|
||||
g_error ("%s", error->message);
|
||||
return 1;
|
||||
}
|
||||
|
||||
root = json_parser_get_root (parser);
|
||||
array = json_node_get_array (root);
|
||||
length = json_array_get_length (array);
|
||||
root_en = json_parser_get_root (parser_en);
|
||||
array_en = json_node_get_array (root_en);
|
||||
length_en = json_array_get_length (array_en);
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ausasu)"));
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(aussasasu)"));
|
||||
for (i = 0; i < length; i++)
|
||||
{
|
||||
JsonObject *obj = json_array_get_object_element (array, i);
|
||||
GVariantBuilder b1;
|
||||
GVariantBuilder b2;
|
||||
guint group;
|
||||
const char *name;
|
||||
char *code;
|
||||
{
|
||||
JsonObject *obj = json_array_get_object_element (array, i);
|
||||
JsonObject *obj_en = json_array_get_object_element (array_en, i);
|
||||
GVariantBuilder b1;
|
||||
GVariantBuilder b2;
|
||||
GVariantBuilder b3;
|
||||
guint group;
|
||||
const char *name;
|
||||
const char *name_en;
|
||||
char *code;
|
||||
if (!json_object_has_member (obj, "group"))
|
||||
continue;
|
||||
if (!json_object_has_member (obj_en, "group"))
|
||||
continue;
|
||||
group = json_object_get_int_member (obj, "group");
|
||||
name = json_object_get_string_member (obj, "label");
|
||||
name_en = json_object_get_string_member (obj_en, "label");
|
||||
if (json_object_has_member (obj, "skins") && json_object_has_member (obj_en, "skins"))
|
||||
{
|
||||
JsonArray *a2 = json_object_get_array_member (obj, "skins");
|
||||
JsonNode *n2 = json_array_get_element (a2, 0);
|
||||
JsonObject *o2 = json_node_get_object (n2);
|
||||
code = g_strdup (json_object_get_string_member (o2, "hexcode"));
|
||||
}
|
||||
else
|
||||
{
|
||||
code = g_strdup (json_object_get_string_member (obj, "hexcode"));
|
||||
}
|
||||
g_variant_builder_init (&b1, G_VARIANT_TYPE ("au"));
|
||||
|
||||
if (!json_object_has_member (obj, "group"))
|
||||
continue;
|
||||
if (!parse_code (&b1, code))
|
||||
return 1;
|
||||
|
||||
group = json_object_get_int_member (obj, "group");
|
||||
name = json_object_get_string_member (obj, "label");
|
||||
|
||||
if (json_object_has_member (obj, "skins"))
|
||||
g_variant_builder_init (&b2, G_VARIANT_TYPE ("as"));
|
||||
if (json_object_has_member (obj_en, "tags"))
|
||||
{
|
||||
JsonArray *tags_en = json_object_get_array_member (obj_en, "tags");
|
||||
for (int j = 0; j < json_array_get_length (tags_en); j++)
|
||||
{
|
||||
JsonArray *a2 = json_object_get_array_member (obj, "skins");
|
||||
JsonNode *n2 = json_array_get_element (a2, 0);
|
||||
JsonObject *o2 = json_node_get_object (n2);
|
||||
code = g_strdup (json_object_get_string_member (o2, "hexcode"));
|
||||
g_variant_builder_add (&b2, "s", json_array_get_string_element (tags_en, j));
|
||||
}
|
||||
else
|
||||
}
|
||||
|
||||
g_variant_builder_init (&b3, G_VARIANT_TYPE ("as"));
|
||||
if (json_object_has_member (obj, "tags"))
|
||||
{
|
||||
JsonArray *tags = json_object_get_array_member (obj, "tags");
|
||||
for (int j = 0; j < json_array_get_length (tags); j++)
|
||||
{
|
||||
code = g_strdup (json_object_get_string_member (obj, "hexcode"));
|
||||
g_variant_builder_add (&b3, "s", json_array_get_string_element (tags, j));
|
||||
}
|
||||
|
||||
g_variant_builder_init (&b1, G_VARIANT_TYPE ("au"));
|
||||
|
||||
if (!parse_code (&b1, code))
|
||||
return 1;
|
||||
|
||||
g_variant_builder_init (&b2, G_VARIANT_TYPE ("as"));
|
||||
if (json_object_has_member (obj, "tags"))
|
||||
{
|
||||
JsonArray *tags = json_object_get_array_member (obj, "tags");
|
||||
for (int j = 0; j < json_array_get_length (tags); j++)
|
||||
g_variant_builder_add (&b2, "s", json_array_get_string_element (tags, j));
|
||||
}
|
||||
|
||||
g_variant_builder_add (&builder, "(ausasu)", &b1, name, &b2, group);
|
||||
}
|
||||
|
||||
}
|
||||
g_variant_builder_add (&builder, "(aussasasu)", &b1, name_en, name, &b2, &b3, group);
|
||||
}
|
||||
v = g_variant_builder_end (&builder);
|
||||
if (g_str_has_suffix (argv[2], ".json"))
|
||||
if (g_str_has_suffix (argv[3], ".json"))
|
||||
{
|
||||
JsonNode *node;
|
||||
char *out;
|
||||
|
||||
node = json_gvariant_serialize (v);
|
||||
out = json_to_string (node, TRUE);
|
||||
if (!g_file_set_contents (argv[2], out, -1, &error))
|
||||
if (!g_file_set_contents (argv[3], out, -1, &error))
|
||||
{
|
||||
g_error ("%s", error->message);
|
||||
return 1;
|
||||
@@ -171,7 +196,7 @@ main (int argc, char *argv[])
|
||||
GBytes *bytes;
|
||||
|
||||
bytes = g_variant_get_data_as_bytes (v);
|
||||
if (!g_file_set_contents (argv[2], g_bytes_get_data (bytes, NULL), g_bytes_get_size (bytes), &error))
|
||||
if (!g_file_set_contents (argv[3], g_bytes_get_data (bytes, NULL), g_bytes_get_size (bytes), &error))
|
||||
{
|
||||
g_error ("%s", error->message);
|
||||
return 1;
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -871,6 +871,7 @@ static const char *role_names[] = {
|
||||
[GTK_ACCESSIBLE_ROLE_BLOCK_QUOTE] = NC_("accessibility", "block quote"),
|
||||
[GTK_ACCESSIBLE_ROLE_ARTICLE] = NC_("accessibility", "article"),
|
||||
[GTK_ACCESSIBLE_ROLE_COMMENT] = NC_("accessibility", "comment"),
|
||||
[GTK_ACCESSIBLE_ROLE_TERMINAL] = NC_("accessibility", "terminal"),
|
||||
};
|
||||
|
||||
/*< private >
|
||||
@@ -989,6 +990,7 @@ static struct {
|
||||
{ GTK_ACCESSIBLE_ROLE_DIALOG, GTK_ACCESSIBLE_ROLE_ALERT_DIALOG },
|
||||
{ GTK_ACCESSIBLE_ROLE_DOCUMENT, GTK_ACCESSIBLE_ROLE_ARTICLE },
|
||||
{ GTK_ACCESSIBLE_ROLE_ARTICLE, GTK_ACCESSIBLE_ROLE_COMMENT },
|
||||
{ GTK_ACCESSIBLE_ROLE_TERMINAL, GTK_ACCESSIBLE_ROLE_WIDGET },
|
||||
};
|
||||
|
||||
gboolean
|
||||
|
||||
@@ -80,12 +80,13 @@ nul_terminate_contents (GBytes *bytes)
|
||||
gsize size;
|
||||
|
||||
data = g_bytes_get_data (bytes, &size);
|
||||
if (size > 0 && data[size - 1] != '\0')
|
||||
if (size == 0 || (size > 0 && data[size - 1] != '\0'))
|
||||
{
|
||||
guchar *copy;
|
||||
|
||||
copy = g_new (guchar, size + 1);
|
||||
memcpy (copy, data, size);
|
||||
if (size > 0)
|
||||
memcpy (copy, data, size);
|
||||
copy[size] = '\0';
|
||||
|
||||
g_bytes_unref (bytes);
|
||||
|
||||
@@ -146,7 +146,8 @@ gtk_application_impl_wayland_inhibit (GtkApplicationImpl *impl,
|
||||
}
|
||||
}
|
||||
|
||||
inhibitor->dbus_cookie = ((GtkApplicationImplWaylandClass *) G_OBJECT_GET_CLASS (wayland))->dbus_inhibit (impl, window, flags, reason);
|
||||
if (flags)
|
||||
inhibitor->dbus_cookie = ((GtkApplicationImplWaylandClass *) G_OBJECT_GET_CLASS (wayland))->dbus_inhibit (impl, window, flags, reason);
|
||||
|
||||
return inhibitor->cookie;
|
||||
}
|
||||
|
||||
+2
-2
@@ -517,7 +517,7 @@ gtk_editable_delete_text (GtkEditable *editable,
|
||||
{
|
||||
g_return_if_fail (GTK_IS_EDITABLE (editable));
|
||||
g_return_if_fail (start_pos >= 0);
|
||||
g_return_if_fail (end_pos == -1 || end_pos > start_pos);
|
||||
g_return_if_fail (end_pos == -1 || end_pos >= start_pos);
|
||||
|
||||
GTK_EDITABLE_GET_IFACE (editable)->do_delete_text (editable, start_pos, end_pos);
|
||||
}
|
||||
@@ -552,7 +552,7 @@ gtk_editable_get_chars (GtkEditable *editable,
|
||||
|
||||
g_return_val_if_fail (GTK_IS_EDITABLE (editable), NULL);
|
||||
g_return_val_if_fail (start_pos >= 0, NULL);
|
||||
g_return_val_if_fail (end_pos == -1 || end_pos > start_pos, NULL);
|
||||
g_return_val_if_fail (end_pos == -1 || end_pos >= start_pos, NULL);
|
||||
|
||||
text = GTK_EDITABLE_GET_IFACE (editable)->get_text (editable);
|
||||
length = g_utf8_strlen (text, -1);
|
||||
|
||||
+21
-13
@@ -321,7 +321,7 @@ populate_recent_section (GtkEmojiChooser *chooser)
|
||||
GVariantIter iter;
|
||||
gboolean empty = TRUE;
|
||||
|
||||
variant = g_settings_get_value (chooser->settings, "recent-emoji");
|
||||
variant = g_settings_get_value (chooser->settings, "recently-used-emoji");
|
||||
g_variant_iter_init (&iter, variant);
|
||||
while ((item = g_variant_iter_next_value (&iter)))
|
||||
{
|
||||
@@ -354,8 +354,8 @@ add_recent_item (GtkEmojiChooser *chooser,
|
||||
|
||||
g_variant_ref (item);
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a((ausasu)u)"));
|
||||
g_variant_builder_add (&builder, "(@(ausasu)u)", item, modifier);
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a((aussasasu)u)"));
|
||||
g_variant_builder_add (&builder, "(@(aussasasu)u)", item, modifier);
|
||||
|
||||
children = NULL;
|
||||
for (child = gtk_widget_get_last_child (chooser->recent.box);
|
||||
@@ -380,7 +380,7 @@ add_recent_item (GtkEmojiChooser *chooser,
|
||||
continue;
|
||||
}
|
||||
|
||||
g_variant_builder_add (&builder, "(@(ausasu)u)", item2, modifier2);
|
||||
g_variant_builder_add (&builder, "(@(aussasasu)u)", item2, modifier2);
|
||||
}
|
||||
g_list_free (children);
|
||||
|
||||
@@ -390,7 +390,7 @@ add_recent_item (GtkEmojiChooser *chooser,
|
||||
gtk_widget_set_visible (chooser->recent.box, TRUE);
|
||||
gtk_widget_set_sensitive (chooser->recent.button, TRUE);
|
||||
|
||||
g_settings_set_value (chooser->settings, "recent-emoji", g_variant_builder_end (&builder));
|
||||
g_settings_set_value (chooser->settings, "recently-used-emoji", g_variant_builder_end (&builder));
|
||||
|
||||
g_variant_unref (item);
|
||||
}
|
||||
@@ -720,7 +720,7 @@ populate_emoji_chooser (gpointer data)
|
||||
|
||||
bytes = get_emoji_data ();
|
||||
|
||||
chooser->data = g_variant_ref_sink (g_variant_new_from_bytes (G_VARIANT_TYPE ("a(ausasu)"), bytes, TRUE));
|
||||
chooser->data = g_variant_ref_sink (g_variant_new_from_bytes (G_VARIANT_TYPE ("a(aussasasu)"), bytes, TRUE));
|
||||
g_bytes_unref (bytes);
|
||||
}
|
||||
|
||||
@@ -734,7 +734,7 @@ populate_emoji_chooser (gpointer data)
|
||||
{
|
||||
guint group;
|
||||
|
||||
g_variant_get_child (item, 3, "u", &group);
|
||||
g_variant_get_child (item, 5, "u", &group);
|
||||
|
||||
if (group == chooser->people.group)
|
||||
chooser->box = chooser->people.box;
|
||||
@@ -866,9 +866,12 @@ filter_func (GtkFlowBoxChild *child,
|
||||
GtkEmojiChooser *chooser;
|
||||
GVariant *emoji_data;
|
||||
const char *text;
|
||||
const char *name_en;
|
||||
const char *name;
|
||||
const char **keywords_en;
|
||||
const char **keywords;
|
||||
char **term_tokens;
|
||||
char **name_tokens_en;
|
||||
char **name_tokens;
|
||||
gboolean res;
|
||||
|
||||
@@ -885,16 +888,21 @@ filter_func (GtkFlowBoxChild *child,
|
||||
goto out;
|
||||
|
||||
term_tokens = g_str_tokenize_and_fold (text, "en", NULL);
|
||||
|
||||
g_variant_get_child (emoji_data, 1, "&s", &name);
|
||||
name_tokens = g_str_tokenize_and_fold (name, "en", NULL);
|
||||
g_variant_get_child (emoji_data, 2, "^a&s", &keywords);
|
||||
g_variant_get_child (emoji_data, 1, "&s", &name_en);
|
||||
name_tokens = g_str_tokenize_and_fold (name_en, "en", NULL);
|
||||
g_variant_get_child (emoji_data, 2, "&s", &name);
|
||||
name_tokens_en = g_str_tokenize_and_fold (name, "en", NULL);
|
||||
g_variant_get_child (emoji_data, 3, "^a&s", &keywords_en);
|
||||
g_variant_get_child (emoji_data, 4, "^a&s", &keywords);
|
||||
|
||||
res = match_tokens ((const char **)term_tokens, (const char **)name_tokens) ||
|
||||
match_tokens ((const char **)term_tokens, keywords);
|
||||
match_tokens ((const char **)term_tokens, (const char **)name_tokens_en) ||
|
||||
match_tokens ((const char **)term_tokens, keywords) ||
|
||||
match_tokens ((const char **)term_tokens, keywords_en);
|
||||
|
||||
g_strfreev (term_tokens);
|
||||
g_strfreev (name_tokens);
|
||||
g_strfreev (name_tokens_en);
|
||||
|
||||
out:
|
||||
if (res)
|
||||
@@ -978,7 +986,7 @@ setup_section (GtkEmojiChooser *chooser,
|
||||
section->group = group;
|
||||
|
||||
gtk_button_set_icon_name (GTK_BUTTON (section->button), icon);
|
||||
|
||||
|
||||
gtk_flow_box_disable_move_cursor (GTK_FLOW_BOX (section->box));
|
||||
gtk_flow_box_set_filter_func (GTK_FLOW_BOX (section->box), filter_func, section, NULL);
|
||||
g_signal_connect_swapped (section->button, "clicked", G_CALLBACK (scroll_to_section), section);
|
||||
|
||||
@@ -162,9 +162,12 @@ gtk_entry_buffer_normal_insert_text (GtkEntryBuffer *buffer,
|
||||
|
||||
/* Could be a password, so can't leave stuff in memory. */
|
||||
et_new = g_malloc (pv->normal_text_size);
|
||||
memcpy (et_new, pv->normal_text, MIN (prev_size, pv->normal_text_size));
|
||||
trash_area (pv->normal_text, prev_size);
|
||||
g_free (pv->normal_text);
|
||||
if (pv->normal_text)
|
||||
{
|
||||
memcpy (et_new, pv->normal_text, MIN (prev_size, pv->normal_text_size));
|
||||
trash_area (pv->normal_text, prev_size);
|
||||
g_free (pv->normal_text);
|
||||
}
|
||||
pv->normal_text = et_new;
|
||||
}
|
||||
|
||||
|
||||
+14
-3
@@ -1432,6 +1432,13 @@ typedef enum {
|
||||
* Since: 4.14
|
||||
*/
|
||||
|
||||
/**
|
||||
* GTK_ACCESSIBLE_ROLE_TERMINAL:
|
||||
*
|
||||
* A virtual terminal.
|
||||
*
|
||||
* Since: 4.14
|
||||
*/
|
||||
typedef enum {
|
||||
GTK_ACCESSIBLE_ROLE_ALERT,
|
||||
GTK_ACCESSIBLE_ROLE_ALERT_DIALOG,
|
||||
@@ -1516,7 +1523,8 @@ typedef enum {
|
||||
GTK_ACCESSIBLE_ROLE_PARAGRAPH GDK_AVAILABLE_ENUMERATOR_IN_4_14,
|
||||
GTK_ACCESSIBLE_ROLE_BLOCK_QUOTE GDK_AVAILABLE_ENUMERATOR_IN_4_14,
|
||||
GTK_ACCESSIBLE_ROLE_ARTICLE GDK_AVAILABLE_ENUMERATOR_IN_4_14,
|
||||
GTK_ACCESSIBLE_ROLE_COMMENT GDK_AVAILABLE_ENUMERATOR_IN_4_14
|
||||
GTK_ACCESSIBLE_ROLE_COMMENT GDK_AVAILABLE_ENUMERATOR_IN_4_14,
|
||||
GTK_ACCESSIBLE_ROLE_TERMINAL GDK_AVAILABLE_ENUMERATOR_IN_4_14
|
||||
} GtkAccessibleRole;
|
||||
|
||||
/**
|
||||
@@ -1826,13 +1834,16 @@ typedef enum {
|
||||
|
||||
/**
|
||||
* GtkPopoverMenuFlags:
|
||||
* @GTK_POPOVER_MENU_SLIDING: Submenus are presented as sliding submenus that
|
||||
* replace the main menu.
|
||||
* @GTK_POPOVER_MENU_NESTED: Submenus are presented as traditional, nested
|
||||
* popovers.
|
||||
*
|
||||
* Flags that affect how [class@Gtk.PopoverMenu] widgets built from
|
||||
* a [class@Gio.MenuModel] are created and displayed.
|
||||
*/
|
||||
/**
|
||||
* GTK_POPOVER_MENU_SLIDING:
|
||||
*
|
||||
* Submenus are presented as sliding submenus that replace the main menu.
|
||||
*
|
||||
* Since: 4.14
|
||||
*/
|
||||
|
||||
@@ -4013,6 +4013,7 @@ gtk_icon_paintable_new_for_file (GFile *file,
|
||||
}
|
||||
|
||||
icon->is_svg = suffix_from_name (icon->filename) == ICON_CACHE_FLAG_SVG_SUFFIX;
|
||||
icon->is_symbolic = icon_uri_is_symbolic (icon->filename, -1);
|
||||
|
||||
return icon;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<schemalist>
|
||||
|
||||
<schema id='org.gtk.gtk4.Settings.EmojiChooser' path='/org/gtk/gtk4/settings/emoji-chooser/'>
|
||||
<key name='recent-emoji' type='a((ausasu)u)'>
|
||||
<key name='recently-used-emoji' type='a((aussasasu)u)'>
|
||||
<default>[]</default>
|
||||
<summary>Recently used Emoji</summary>
|
||||
<description>
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
project('gtk', 'c',
|
||||
version: '4.13.8',
|
||||
version: '4.13.9',
|
||||
default_options: [
|
||||
'buildtype=debugoptimized',
|
||||
'warning_level=1',
|
||||
|
||||
@@ -35,7 +35,7 @@ msgstr ""
|
||||
"Project-Id-Version: gtk+ 2.8.2\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
|
||||
"POT-Creation-Date: 2024-02-12 01:46+0000\n"
|
||||
"PO-Revision-Date: 2024-02-14 22:28+0100\n"
|
||||
"PO-Revision-Date: 2024-02-21 22:28+0100\n"
|
||||
"Last-Translator: Jordi Mas i Hernàndez <jmas@softcatala.org>\n"
|
||||
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
|
||||
"Language: ca\n"
|
||||
@@ -3933,7 +3933,7 @@ msgstr "Cap"
|
||||
|
||||
#: gtk/inspector/general.c:901
|
||||
msgid "IM Context is hardcoded by GTK_IM_MODULE"
|
||||
msgstr "El content IM està definit manualment per GTK_IM_MODULE"
|
||||
msgstr "El context IM està definit manualment per GTK_IM_MODULE"
|
||||
|
||||
#: gtk/inspector/general.ui:31
|
||||
msgid "GTK Version"
|
||||
@@ -7590,12 +7590,12 @@ msgstr "CAMÍ"
|
||||
|
||||
#: tools/gtk-path-tool-decompose.c:99
|
||||
msgid "Decompose a path."
|
||||
msgstr "Descomposa un camí"
|
||||
msgstr "Descompon un camí."
|
||||
|
||||
#: tools/gtk-path-tool-decompose.c:112 tools/gtk-path-tool-info.c:113
|
||||
#: tools/gtk-path-tool-restrict.c:64 tools/gtk-path-tool-reverse.c:58
|
||||
msgid "No paths given."
|
||||
msgstr "No s'ha proporcionat cap camí"
|
||||
msgstr "No s'ha proporcionat cap camí."
|
||||
|
||||
#: tools/gtk-path-tool-decompose.c:140 tools/gtk-path-tool-restrict.c:94
|
||||
#: tools/gtk-path-tool-reverse.c:78
|
||||
@@ -7809,7 +7809,7 @@ msgstr "Previsualització del camí"
|
||||
|
||||
#: tools/gtk-path-tool-show.c:180
|
||||
msgid "Display the path."
|
||||
msgstr "Visualitza el camí"
|
||||
msgstr "Visualitza el camí."
|
||||
|
||||
#: tools/gtk-path-tool-show.c:215
|
||||
msgid "Can only show a single path"
|
||||
@@ -8105,50 +8105,3 @@ msgstr ""
|
||||
"No hi ha el fitxer índex de tema a «%s».\n"
|
||||
"Si realment voleu crear una memòria cau d'icones aquí, utilitzeu --ignore-theme-index.\n"
|
||||
|
||||
#~ msgctxt "GL version"
|
||||
#~ msgid "Disabled"
|
||||
#~ msgstr "Inhabilitat"
|
||||
|
||||
#~ msgctxt "GL vendor"
|
||||
#~ msgid "Disabled"
|
||||
#~ msgstr "Inhabilitat"
|
||||
|
||||
#~ msgctxt "GL vendor"
|
||||
#~ msgid "None"
|
||||
#~ msgstr "Cap"
|
||||
|
||||
#, c-format
|
||||
#~ msgid "Unspecified error decoding media"
|
||||
#~ msgstr "S'ha produït un error no especificat descodificant un mitjà"
|
||||
|
||||
#, c-format
|
||||
#~ msgid "Cannot find decoder: %s"
|
||||
#~ msgstr "No s'ha pogut trobar el descodificador: %s"
|
||||
|
||||
#~ msgid "Failed to allocate a codec context"
|
||||
#~ msgstr "No s'ha pogut assignar un context de còdec"
|
||||
|
||||
#, c-format
|
||||
#~ msgid "Cannot find encoder: %s"
|
||||
#~ msgstr "No s'ha pogut trobar el codificador: %s"
|
||||
|
||||
#~ msgid "Cannot add new stream"
|
||||
#~ msgstr "No es pot afegir un flux nou"
|
||||
|
||||
#~ msgid "Failed to allocate an audio frame"
|
||||
#~ msgstr "No s'ha pogut assignar una trama d'àudio"
|
||||
|
||||
#~ msgid "Not enough memory"
|
||||
#~ msgstr "No hi ha prou memòria"
|
||||
|
||||
#~ msgid "Could not allocate resampler context"
|
||||
#~ msgstr "No s'ha pogut assignar el context del remostreig"
|
||||
|
||||
#~ msgid "No audio output found"
|
||||
#~ msgstr "No s'ha trobat cap sortida d'àudio"
|
||||
|
||||
#~ msgid "Show _Size Column"
|
||||
#~ msgstr "Mostra la columna de la _mida"
|
||||
|
||||
#~ msgid "Show T_ype Column"
|
||||
#~ msgstr "Mos_tra la columna tipus"
|
||||
|
||||
+1731
-1103
File diff suppressed because it is too large
Load Diff
@@ -9,8 +9,8 @@
|
||||
msgid ""
|
||||
msgstr "Project-Id-Version: gtk+ master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
|
||||
"POT-Creation-Date: 2024-02-12 01:46+0000\n"
|
||||
"PO-Revision-Date: 2024-02-18 10:00+0100\n"
|
||||
"POT-Creation-Date: 2024-02-23 01:06+0000\n"
|
||||
"PO-Revision-Date: 2024-02-25 10:00+0100\n"
|
||||
"Last-Translator: Asier Sarasua Garmendia <asiersarasua@ni.eus>\n"
|
||||
"Language-Team: Basque <librezale@librezale.eus>\n"
|
||||
"Language: eu\n"
|
||||
@@ -47,7 +47,7 @@ msgstr "Ezin dira edukiak “%s” gisa hornitu"
|
||||
msgid "Cannot provide contents as %s"
|
||||
msgstr "Ezin dira edukiak %s gisa hornitu"
|
||||
|
||||
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:462
|
||||
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:459
|
||||
msgid "The current backend does not support OpenGL"
|
||||
msgstr "Uneko motorrak ez du OpenGL onartzen"
|
||||
|
||||
@@ -111,32 +111,32 @@ msgstr "Ez da onartzen beste aplikazio batzuetatik arrastatu eta jaregitea."
|
||||
msgid "No compatible formats to transfer contents."
|
||||
msgstr "Ez dago formatu bateragarririk edukiak transferitzeko."
|
||||
|
||||
#: gdk/gdkglcontext.c:422 gdk/x11/gdkglcontext-glx.c:645
|
||||
#: gdk/gdkglcontext.c:419 gdk/x11/gdkglcontext-glx.c:645
|
||||
msgid "No GL API allowed."
|
||||
msgstr "Ez da onartzen GL APIrik."
|
||||
|
||||
#: gdk/gdkglcontext.c:445 gdk/win32/gdkglcontext-win32-wgl.c:386
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:529
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:573 gdk/x11/gdkglcontext-glx.c:691
|
||||
#: gdk/gdkglcontext.c:442 gdk/win32/gdkglcontext-win32-wgl.c:395
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:538
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:582 gdk/x11/gdkglcontext-glx.c:691
|
||||
msgid "Unable to create a GL context"
|
||||
msgstr "Ezin da GL testuingurua sortu"
|
||||
|
||||
#: gdk/gdkglcontext.c:1306
|
||||
#: gdk/gdkglcontext.c:1303
|
||||
msgid "OpenGL ES disabled via GDK_DEBUG"
|
||||
msgstr "OpenGL ES desgaituta GDK_DEBUG bidez"
|
||||
|
||||
#: gdk/gdkglcontext.c:1318
|
||||
#: gdk/gdkglcontext.c:1315
|
||||
msgid "OpenGL disabled via GDK_DEBUG"
|
||||
msgstr "OpenGL desgaituta GDK_DEBUG bidez"
|
||||
|
||||
#: gdk/gdkglcontext.c:1329
|
||||
#: gdk/gdkglcontext.c:1326
|
||||
#, c-format
|
||||
msgid "Application does not support %s API"
|
||||
msgstr "Aplikazioak ez du %s APIa onartzen"
|
||||
|
||||
#. translators: This is about OpenGL backend names, like
|
||||
#. * "Trying to use X11 GLX, but EGL is already in use"
|
||||
#: gdk/gdkglcontext.c:2115
|
||||
#: gdk/gdkglcontext.c:2112
|
||||
#, c-format
|
||||
msgid "Trying to use %s, but %s is already in use"
|
||||
msgstr "%s erabiltzen saiatzen, baina %s jadanik erabiltzen ari da"
|
||||
@@ -699,21 +699,21 @@ msgstr "IDataObject_GetData (0x%x) prozesuak huts egin du, 0x%lx itzultzen"
|
||||
msgid "Failed to transmute DnD data W32 format 0x%x to %p (%s)"
|
||||
msgstr "Huts egin du DnD datuen 0x%x W32 formatua %p formatura bihurtzeak (%s)"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:320
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:329
|
||||
msgid "No GL implementation is available"
|
||||
msgstr "Ez dago GL inplementaziorik erabilgarri"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:395
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:404
|
||||
#, c-format
|
||||
msgid "WGL version %d.%d is too low, need at least %d.%d"
|
||||
msgstr "WGL %d.%d bertsioa zaharregia da, gutxienez %d.%d behar da"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:413
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:422
|
||||
#, c-format
|
||||
msgid "GL implementation cannot share GL contexts"
|
||||
msgstr "GL inplementazioak ezin ditu GL testuinguruak partekatu"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:693
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:702
|
||||
msgid "No available configurations for the given pixel format"
|
||||
msgstr "Ez dago emandako pixel formatuaren konfiguraziorik erabilgarri"
|
||||
|
||||
@@ -1737,6 +1737,11 @@ msgctxt "accessibility"
|
||||
msgid "comment"
|
||||
msgstr "iruzkina"
|
||||
|
||||
#: gtk/gtkaccessible.c:874
|
||||
msgctxt "accessibility"
|
||||
msgid "terminal"
|
||||
msgstr "terminala"
|
||||
|
||||
#: gtk/gtkalertdialog.c:668 gtk/print/gtkcustompaperunixdialog.c:322
|
||||
#: gtk/gtkmessagedialog.c:166 gtk/ui/gtkassistant.ui:40
|
||||
msgid "_Close"
|
||||
@@ -2310,7 +2315,7 @@ msgid "If you delete an item, it will be permanently lost."
|
||||
msgstr "Elementu bat ezabatzen baduzu, betirako galduko duzu."
|
||||
|
||||
#: gtk/gtkfilechooserwidget.c:1188 gtk/gtkfilechooserwidget.c:1786
|
||||
#: gtk/gtklabel.c:5702 gtk/gtktext.c:6147 gtk/gtktextview.c:9018
|
||||
#: gtk/gtklabel.c:5712 gtk/gtktext.c:6193 gtk/gtktextview.c:9080
|
||||
msgid "_Delete"
|
||||
msgstr "Ez_abatu"
|
||||
|
||||
@@ -2648,31 +2653,31 @@ msgstr "Itxi"
|
||||
msgid "Close the infobar"
|
||||
msgstr "Itxi informazio-barra"
|
||||
|
||||
#: gtk/gtklabel.c:5699 gtk/gtktext.c:6135 gtk/gtktextview.c:9006
|
||||
#: gtk/gtklabel.c:5709 gtk/gtktext.c:6181 gtk/gtktextview.c:9068
|
||||
msgid "Cu_t"
|
||||
msgstr "_Ebaki"
|
||||
|
||||
#: gtk/gtklabel.c:5700 gtk/gtktext.c:6139 gtk/gtktextview.c:9010
|
||||
#: gtk/gtklabel.c:5710 gtk/gtktext.c:6185 gtk/gtktextview.c:9072
|
||||
msgid "_Copy"
|
||||
msgstr "_Kopiatu"
|
||||
|
||||
#: gtk/gtklabel.c:5701 gtk/gtktext.c:6143 gtk/gtktextview.c:9014
|
||||
#: gtk/gtklabel.c:5711 gtk/gtktext.c:6189 gtk/gtktextview.c:9076
|
||||
msgid "_Paste"
|
||||
msgstr "_Itsatsi"
|
||||
|
||||
#: gtk/gtklabel.c:5707 gtk/gtktext.c:6156 gtk/gtktextview.c:9039
|
||||
#: gtk/gtklabel.c:5717 gtk/gtktext.c:6202 gtk/gtktextview.c:9101
|
||||
msgid "Select _All"
|
||||
msgstr "Hautatu _dena"
|
||||
|
||||
#: gtk/gtklabel.c:5712
|
||||
#: gtk/gtklabel.c:5722
|
||||
msgid "_Open Link"
|
||||
msgstr "_Ireki esteka"
|
||||
|
||||
#: gtk/gtklabel.c:5716
|
||||
#: gtk/gtklabel.c:5726
|
||||
msgid "Copy _Link Address"
|
||||
msgstr "Kopiatu _estekaren helbidea"
|
||||
|
||||
#: gtk/gtklabel.c:5760 gtk/gtktext.c:2716 gtk/gtktextview.c:9088
|
||||
#: gtk/gtklabel.c:5770 gtk/gtktext.c:2724 gtk/gtktextview.c:9150
|
||||
msgid "Context menu"
|
||||
msgstr "Testuinguru-menua"
|
||||
|
||||
@@ -3514,7 +3519,7 @@ msgstr "Ezin da “%s” URIa duen elementua “%s”(e)ra eraman"
|
||||
msgid "No registered application with name “%s” for item with URI “%s” found"
|
||||
msgstr "Ez da “%s” izenarekin erregistratutako aplikaziorik aurkitu “%s” URIa duen elementuarentzako"
|
||||
|
||||
#: gtk/gtksearchentry.c:767
|
||||
#: gtk/gtksearchentry.c:810
|
||||
msgid "Clear Entry"
|
||||
msgstr "Garbitu sarrera"
|
||||
|
||||
@@ -3605,15 +3610,15 @@ msgctxt "accessibility"
|
||||
msgid "Sidebar"
|
||||
msgstr "Alboko barra"
|
||||
|
||||
#: gtk/gtktext.c:6161 gtk/gtktextview.c:9044
|
||||
#: gtk/gtktext.c:6207 gtk/gtktextview.c:9106
|
||||
msgid "Insert _Emoji"
|
||||
msgstr "Txertatu _emojia"
|
||||
|
||||
#: gtk/gtktextview.c:9026
|
||||
#: gtk/gtktextview.c:9088
|
||||
msgid "_Undo"
|
||||
msgstr "_Desegin"
|
||||
|
||||
#: gtk/gtktextview.c:9030
|
||||
#: gtk/gtktextview.c:9092
|
||||
msgid "_Redo"
|
||||
msgstr "_Berregin"
|
||||
|
||||
@@ -3806,37 +3811,37 @@ msgstr "Estiloaren klaseak"
|
||||
msgid "CSS Property"
|
||||
msgstr "CSSren propietatea"
|
||||
|
||||
#: gtk/inspector/general.c:363
|
||||
#: gtk/inspector/general.c:370
|
||||
msgctxt "GL version"
|
||||
msgid "None"
|
||||
msgstr "Bat ere ez"
|
||||
|
||||
#: gtk/inspector/general.c:441
|
||||
#: gtk/inspector/general.c:461
|
||||
msgctxt "GL version"
|
||||
msgid "Unknown"
|
||||
msgstr "Ezezaguna"
|
||||
|
||||
#: gtk/inspector/general.c:503
|
||||
#: gtk/inspector/general.c:523
|
||||
msgctxt "Vulkan device"
|
||||
msgid "Disabled"
|
||||
msgstr "Desgaituta"
|
||||
|
||||
#: gtk/inspector/general.c:504 gtk/inspector/general.c:505
|
||||
#: gtk/inspector/general.c:524 gtk/inspector/general.c:525
|
||||
msgctxt "Vulkan version"
|
||||
msgid "Disabled"
|
||||
msgstr "Desgaituta"
|
||||
|
||||
#: gtk/inspector/general.c:555
|
||||
#: gtk/inspector/general.c:576
|
||||
msgctxt "Vulkan device"
|
||||
msgid "None"
|
||||
msgstr "Bat ere ez"
|
||||
|
||||
#: gtk/inspector/general.c:556 gtk/inspector/general.c:557
|
||||
#: gtk/inspector/general.c:577 gtk/inspector/general.c:578
|
||||
msgctxt "Vulkan version"
|
||||
msgid "None"
|
||||
msgstr "Bat ere ez"
|
||||
|
||||
#: gtk/inspector/general.c:901
|
||||
#: gtk/inspector/general.c:922
|
||||
msgid "IM Context is hardcoded by GTK_IM_MODULE"
|
||||
msgstr "IM testuingurua GTK_IM_MODULE kodean txertatuta dago"
|
||||
|
||||
@@ -7731,6 +7736,7 @@ msgid ""
|
||||
"\n"
|
||||
"Commands:\n"
|
||||
" benchmark Benchmark rendering of a node\n"
|
||||
" compare Compare nodes or images\n"
|
||||
" info Provide information about the node\n"
|
||||
" show Show the node\n"
|
||||
" render Take a screenshot of the node\n"
|
||||
@@ -7742,6 +7748,7 @@ msgstr "Erabilera:\n"
|
||||
"\n"
|
||||
"Komandoak:\n"
|
||||
" benchmark Nodo baten errendatze-proba\n"
|
||||
" compare Konparatu nodoak edo irudiak\n"
|
||||
" info Erakutsi nodoari buruzko informazioa\n"
|
||||
" show Erakutsi nodoa\n"
|
||||
" render Egin nodoaren pantaila-argazki bat\n"
|
||||
|
||||
@@ -12,8 +12,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gtk+ 2.6\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
|
||||
"POT-Creation-Date: 2024-02-12 01:46+0000\n"
|
||||
"PO-Revision-Date: 2024-02-12 19:26+0330\n"
|
||||
"POT-Creation-Date: 2024-02-23 01:06+0000\n"
|
||||
"PO-Revision-Date: 2024-02-24 00:20+0330\n"
|
||||
"Last-Translator: Danial Behzadi <dani.behzi@ubuntu.com>\n"
|
||||
"Language-Team: Persian <>\n"
|
||||
"Language: fa\n"
|
||||
@@ -53,7 +53,7 @@ msgstr "نمیتوان محتوا را به شکل «%s» فراهم کرد"
|
||||
msgid "Cannot provide contents as %s"
|
||||
msgstr "نمیتوان محتوا را به شکل %s فراهم کرد"
|
||||
|
||||
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:462
|
||||
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:459
|
||||
msgid "The current backend does not support OpenGL"
|
||||
msgstr "پسانه در حال حاضر از OpenGL پشتیبانی نمیکند"
|
||||
|
||||
@@ -116,32 +116,32 @@ msgstr "کشیدن و رها کردن از دیگر برنامهها پشتی
|
||||
msgid "No compatible formats to transfer contents."
|
||||
msgstr "هیچ قالب سازگاری برای انتقال محتویات وجود ندارد."
|
||||
|
||||
#: gdk/gdkglcontext.c:422 gdk/x11/gdkglcontext-glx.c:645
|
||||
#: gdk/gdkglcontext.c:419 gdk/x11/gdkglcontext-glx.c:645
|
||||
msgid "No GL API allowed."
|
||||
msgstr "هیچ رابط برنامهنویسی GLای مجاز نیست."
|
||||
|
||||
#: gdk/gdkglcontext.c:445 gdk/win32/gdkglcontext-win32-wgl.c:386
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:529 gdk/win32/gdkglcontext-win32-wgl.c:573
|
||||
#: gdk/gdkglcontext.c:442 gdk/win32/gdkglcontext-win32-wgl.c:395
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:538 gdk/win32/gdkglcontext-win32-wgl.c:582
|
||||
#: gdk/x11/gdkglcontext-glx.c:691
|
||||
msgid "Unable to create a GL context"
|
||||
msgstr "امکان ساخت زمینه مناسب برای GL نبود"
|
||||
|
||||
#: gdk/gdkglcontext.c:1306
|
||||
#: gdk/gdkglcontext.c:1303
|
||||
msgid "OpenGL ES disabled via GDK_DEBUG"
|
||||
msgstr "OpenGL ES به دست GDK_DEBUG از کار افتاد"
|
||||
|
||||
#: gdk/gdkglcontext.c:1318
|
||||
#: gdk/gdkglcontext.c:1315
|
||||
msgid "OpenGL disabled via GDK_DEBUG"
|
||||
msgstr "OpenGL به دست GDK_DEBUG از کار افتاد"
|
||||
|
||||
#: gdk/gdkglcontext.c:1329
|
||||
#: gdk/gdkglcontext.c:1326
|
||||
#, c-format
|
||||
msgid "Application does not support %s API"
|
||||
msgstr "برنامه از API مربوط به %s پشتبانی نمیکند"
|
||||
|
||||
#. translators: This is about OpenGL backend names, like
|
||||
#. * "Trying to use X11 GLX, but EGL is already in use"
|
||||
#: gdk/gdkglcontext.c:2115
|
||||
#: gdk/gdkglcontext.c:2112
|
||||
#, c-format
|
||||
msgid "Trying to use %s, but %s is already in use"
|
||||
msgstr "تلاش شد از %s استفاده شود، ولی %s از پیش در حال استفاده است"
|
||||
@@ -704,21 +704,21 @@ msgstr "IDataObject_GetData (0x%x) شکست خورد. 0x%lx را برگردان
|
||||
msgid "Failed to transmute DnD data W32 format 0x%x to %p (%s)"
|
||||
msgstr "شکست در تغییر شکل قالب W32 دادهٔ کور 0x%x به %p (%s)"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:320
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:329
|
||||
msgid "No GL implementation is available"
|
||||
msgstr "هیچ پیاده سازی GLای پیدا نشد"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:395
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:404
|
||||
#, c-format
|
||||
msgid "WGL version %d.%d is too low, need at least %d.%d"
|
||||
msgstr "WGL نگارش %Id. %Id بیش از حد قدیمی است. کمینه به %Id.%Id نیاز است"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:413
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:422
|
||||
#, c-format
|
||||
msgid "GL implementation cannot share GL contexts"
|
||||
msgstr "پیادهسازی GL نمیتواند بافتارهای GL را همرساند"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:693
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:702
|
||||
msgid "No available configurations for the given pixel format"
|
||||
msgstr "هیچ پیکربندی برای قالب نقطهای ارائه شده موجود نیست"
|
||||
|
||||
@@ -1738,6 +1738,11 @@ msgctxt "accessibility"
|
||||
msgid "comment"
|
||||
msgstr "نظر"
|
||||
|
||||
#: gtk/gtkaccessible.c:874
|
||||
msgctxt "accessibility"
|
||||
msgid "terminal"
|
||||
msgstr "پایانه"
|
||||
|
||||
#: gtk/gtkalertdialog.c:668 gtk/print/gtkcustompaperunixdialog.c:322
|
||||
#: gtk/gtkmessagedialog.c:166 gtk/ui/gtkassistant.ui:40
|
||||
msgid "_Close"
|
||||
@@ -2308,7 +2313,7 @@ msgid "If you delete an item, it will be permanently lost."
|
||||
msgstr "اگر موردی را پاک کنید، برای همیشه از دست خواهد رفت."
|
||||
|
||||
#: gtk/gtkfilechooserwidget.c:1188 gtk/gtkfilechooserwidget.c:1786
|
||||
#: gtk/gtklabel.c:5702 gtk/gtktext.c:6147 gtk/gtktextview.c:9018
|
||||
#: gtk/gtklabel.c:5712 gtk/gtktext.c:6193 gtk/gtktextview.c:9080
|
||||
msgid "_Delete"
|
||||
msgstr "_حذف"
|
||||
|
||||
@@ -2646,31 +2651,31 @@ msgstr "بستن"
|
||||
msgid "Close the infobar"
|
||||
msgstr "بستن نوار اطّلاعات"
|
||||
|
||||
#: gtk/gtklabel.c:5699 gtk/gtktext.c:6135 gtk/gtktextview.c:9006
|
||||
#: gtk/gtklabel.c:5709 gtk/gtktext.c:6181 gtk/gtktextview.c:9068
|
||||
msgid "Cu_t"
|
||||
msgstr "_برش"
|
||||
|
||||
#: gtk/gtklabel.c:5700 gtk/gtktext.c:6139 gtk/gtktextview.c:9010
|
||||
#: gtk/gtklabel.c:5710 gtk/gtktext.c:6185 gtk/gtktextview.c:9072
|
||||
msgid "_Copy"
|
||||
msgstr "_رونوشت"
|
||||
|
||||
#: gtk/gtklabel.c:5701 gtk/gtktext.c:6143 gtk/gtktextview.c:9014
|
||||
#: gtk/gtklabel.c:5711 gtk/gtktext.c:6189 gtk/gtktextview.c:9076
|
||||
msgid "_Paste"
|
||||
msgstr "_چسباندن"
|
||||
|
||||
#: gtk/gtklabel.c:5707 gtk/gtktext.c:6156 gtk/gtktextview.c:9039
|
||||
#: gtk/gtklabel.c:5717 gtk/gtktext.c:6202 gtk/gtktextview.c:9101
|
||||
msgid "Select _All"
|
||||
msgstr "انتخاب _همه"
|
||||
|
||||
#: gtk/gtklabel.c:5712
|
||||
#: gtk/gtklabel.c:5722
|
||||
msgid "_Open Link"
|
||||
msgstr "_گشودن پیوند"
|
||||
|
||||
#: gtk/gtklabel.c:5716
|
||||
#: gtk/gtklabel.c:5726
|
||||
msgid "Copy _Link Address"
|
||||
msgstr "_رونوشت از نشانی پیوند"
|
||||
|
||||
#: gtk/gtklabel.c:5760 gtk/gtktext.c:2716 gtk/gtktextview.c:9088
|
||||
#: gtk/gtklabel.c:5770 gtk/gtktext.c:2724 gtk/gtktextview.c:9150
|
||||
msgid "Context menu"
|
||||
msgstr "فهرست بافتاری"
|
||||
|
||||
@@ -3504,7 +3509,7 @@ msgstr "نمیتوان مورد با نشانی «%s» را به %s منتق
|
||||
msgid "No registered application with name “%s” for item with URI “%s” found"
|
||||
msgstr "هیچ برنامهٔ ثبت شدهای با نام «%s» برای موردی با آدرس «%s» یافت نشد"
|
||||
|
||||
#: gtk/gtksearchentry.c:767
|
||||
#: gtk/gtksearchentry.c:810
|
||||
msgid "Clear Entry"
|
||||
msgstr "پاکسازی ورودی"
|
||||
|
||||
@@ -3595,15 +3600,15 @@ msgctxt "accessibility"
|
||||
msgid "Sidebar"
|
||||
msgstr "نوار کناری"
|
||||
|
||||
#: gtk/gtktext.c:6161 gtk/gtktextview.c:9044
|
||||
#: gtk/gtktext.c:6207 gtk/gtktextview.c:9106
|
||||
msgid "Insert _Emoji"
|
||||
msgstr "درج _ایموجی"
|
||||
|
||||
#: gtk/gtktextview.c:9026
|
||||
#: gtk/gtktextview.c:9088
|
||||
msgid "_Undo"
|
||||
msgstr "بر_گردان"
|
||||
|
||||
#: gtk/gtktextview.c:9030
|
||||
#: gtk/gtktextview.c:9092
|
||||
msgid "_Redo"
|
||||
msgstr "_انجام دوباره"
|
||||
|
||||
@@ -3801,39 +3806,39 @@ msgid "CSS Property"
|
||||
msgstr "مشخصه CSS"
|
||||
|
||||
# farmaan
|
||||
#: gtk/inspector/general.c:363
|
||||
#: gtk/inspector/general.c:370
|
||||
msgctxt "GL version"
|
||||
msgid "None"
|
||||
msgstr "هیچکدام"
|
||||
|
||||
#: gtk/inspector/general.c:441
|
||||
#: gtk/inspector/general.c:461
|
||||
msgctxt "GL version"
|
||||
msgid "Unknown"
|
||||
msgstr "ناشناخته"
|
||||
|
||||
#: gtk/inspector/general.c:503
|
||||
#: gtk/inspector/general.c:523
|
||||
msgctxt "Vulkan device"
|
||||
msgid "Disabled"
|
||||
msgstr "از کار افتاده"
|
||||
|
||||
#: gtk/inspector/general.c:504 gtk/inspector/general.c:505
|
||||
#: gtk/inspector/general.c:524 gtk/inspector/general.c:525
|
||||
msgctxt "Vulkan version"
|
||||
msgid "Disabled"
|
||||
msgstr "از کار افتاده"
|
||||
|
||||
# farmaan
|
||||
#: gtk/inspector/general.c:555
|
||||
#: gtk/inspector/general.c:576
|
||||
msgctxt "Vulkan device"
|
||||
msgid "None"
|
||||
msgstr "هیچکدام"
|
||||
|
||||
# farmaan
|
||||
#: gtk/inspector/general.c:556 gtk/inspector/general.c:557
|
||||
#: gtk/inspector/general.c:577 gtk/inspector/general.c:578
|
||||
msgctxt "Vulkan version"
|
||||
msgid "None"
|
||||
msgstr "هیچکدام"
|
||||
|
||||
#: gtk/inspector/general.c:901
|
||||
#: gtk/inspector/general.c:922
|
||||
msgid "IM Context is hardcoded by GTK_IM_MODULE"
|
||||
msgstr "بافتار IM به دست GTK_IM_MODULE به صورت سخت رمز شده است"
|
||||
|
||||
@@ -7724,6 +7729,7 @@ msgid ""
|
||||
"\n"
|
||||
"Commands:\n"
|
||||
" benchmark Benchmark rendering of a node\n"
|
||||
" compare Compare nodes or images\n"
|
||||
" info Provide information about the node\n"
|
||||
" show Show the node\n"
|
||||
" render Take a screenshot of the node\n"
|
||||
@@ -7737,6 +7743,7 @@ msgstr ""
|
||||
"دستورها:\n"
|
||||
"\n"
|
||||
" benchmark محک پرداخت یک گره\n"
|
||||
" compare مقایسهٔ گرهها یا تصویرها\n"
|
||||
" info فراهم کردن اطَلاعات دربارهٔ گره\n"
|
||||
" show نمایش گره\n"
|
||||
" render نماگرفت از گره\n"
|
||||
|
||||
@@ -20,8 +20,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gtk+-master-po-gl-77922___.merged\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
|
||||
"POT-Creation-Date: 2024-02-12 01:46+0000\n"
|
||||
"PO-Revision-Date: 2024-02-15 03:26+0100\n"
|
||||
"POT-Creation-Date: 2024-02-22 15:33+0000\n"
|
||||
"PO-Revision-Date: 2024-02-22 19:18+0100\n"
|
||||
"Last-Translator: Fran Dieguez <fran.dieguez@gnome.org>\n"
|
||||
"Language-Team: Galician <proxecto@trasno.gal>\n"
|
||||
"Language: gl\n"
|
||||
@@ -65,7 +65,7 @@ msgstr "Non foi posíbel fornecer contidos como «%s»"
|
||||
msgid "Cannot provide contents as %s"
|
||||
msgstr "Non foi posíbel fornecer contidos como %s"
|
||||
|
||||
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:462
|
||||
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:459
|
||||
msgid "The current backend does not support OpenGL"
|
||||
msgstr "O backend actual non admite o OpenGL"
|
||||
|
||||
@@ -129,32 +129,32 @@ msgstr "Arrastrar e soltar desde outras aplicacións non está admitido."
|
||||
msgid "No compatible formats to transfer contents."
|
||||
msgstr "Formatos non compatíbeis para transferir contidos."
|
||||
|
||||
#: gdk/gdkglcontext.c:422 gdk/x11/gdkglcontext-glx.c:645
|
||||
#: gdk/gdkglcontext.c:419 gdk/x11/gdkglcontext-glx.c:645
|
||||
msgid "No GL API allowed."
|
||||
msgstr "Non se permite a API GL."
|
||||
|
||||
#: gdk/gdkglcontext.c:445 gdk/win32/gdkglcontext-win32-wgl.c:386
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:529
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:573 gdk/x11/gdkglcontext-glx.c:691
|
||||
#: gdk/gdkglcontext.c:442 gdk/win32/gdkglcontext-win32-wgl.c:395
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:538
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:582 gdk/x11/gdkglcontext-glx.c:691
|
||||
msgid "Unable to create a GL context"
|
||||
msgstr "Non é posíbel crear un contexto GL"
|
||||
|
||||
#: gdk/gdkglcontext.c:1306
|
||||
#: gdk/gdkglcontext.c:1303
|
||||
msgid "OpenGL ES disabled via GDK_DEBUG"
|
||||
msgstr "OpenGL ES está desactivado mediante GDK_DEBUG"
|
||||
|
||||
#: gdk/gdkglcontext.c:1318
|
||||
#: gdk/gdkglcontext.c:1315
|
||||
msgid "OpenGL disabled via GDK_DEBUG"
|
||||
msgstr "OpenGL desactivado mediante GDK_DEBUG"
|
||||
|
||||
#: gdk/gdkglcontext.c:1329
|
||||
#: gdk/gdkglcontext.c:1326
|
||||
#, c-format
|
||||
msgid "Application does not support %s API"
|
||||
msgstr "A aplicación non admite a API de %s"
|
||||
|
||||
#. translators: This is about OpenGL backend names, like
|
||||
#. * "Trying to use X11 GLX, but EGL is already in use"
|
||||
#: gdk/gdkglcontext.c:2115
|
||||
#: gdk/gdkglcontext.c:2112
|
||||
#, c-format
|
||||
msgid "Trying to use %s, but %s is already in use"
|
||||
msgstr "Tentando usar %s, pero %s xa está en uso"
|
||||
@@ -746,22 +746,22 @@ msgid "Failed to transmute DnD data W32 format 0x%x to %p (%s)"
|
||||
msgstr ""
|
||||
"Produciuse un fallo ao transmutar os datos DnD W32 ao formato 0x%x to %p (%s)"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:320
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:329
|
||||
msgid "No GL implementation is available"
|
||||
msgstr "Non hai unha implementación de GL dispoñíbel"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:395
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:404
|
||||
#, c-format
|
||||
msgid "WGL version %d.%d is too low, need at least %d.%d"
|
||||
msgstr ""
|
||||
"A versión de WGL %d.%d é demasiado antiga, requírese cando menos a %d.%d"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:413
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:422
|
||||
#, c-format
|
||||
msgid "GL implementation cannot share GL contexts"
|
||||
msgstr "A implementación de GL non pode compartir os contextos de GL"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:693
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:702
|
||||
msgid "No available configurations for the given pixel format"
|
||||
msgstr "Non hai configuracións dispoñíbeis para o formato de píxel fornecido"
|
||||
|
||||
@@ -1793,6 +1793,11 @@ msgctxt "accessibility"
|
||||
msgid "comment"
|
||||
msgstr "comentario"
|
||||
|
||||
#: gtk/gtkaccessible.c:874
|
||||
msgctxt "accessibility"
|
||||
msgid "terminal"
|
||||
msgstr "terminal"
|
||||
|
||||
#: gtk/gtkalertdialog.c:668 gtk/print/gtkcustompaperunixdialog.c:322
|
||||
#: gtk/gtkmessagedialog.c:166 gtk/ui/gtkassistant.ui:40
|
||||
msgid "_Close"
|
||||
@@ -2369,7 +2374,7 @@ msgid "If you delete an item, it will be permanently lost."
|
||||
msgstr "Se elimina un elemento perderase para sempre."
|
||||
|
||||
#: gtk/gtkfilechooserwidget.c:1188 gtk/gtkfilechooserwidget.c:1786
|
||||
#: gtk/gtklabel.c:5702 gtk/gtktext.c:6147 gtk/gtktextview.c:9018
|
||||
#: gtk/gtklabel.c:5712 gtk/gtktext.c:6193 gtk/gtktextview.c:9080
|
||||
msgid "_Delete"
|
||||
msgstr "E_liminar"
|
||||
|
||||
@@ -2708,31 +2713,31 @@ msgstr "Pechar"
|
||||
msgid "Close the infobar"
|
||||
msgstr "Pecha a barra de información"
|
||||
|
||||
#: gtk/gtklabel.c:5699 gtk/gtktext.c:6135 gtk/gtktextview.c:9006
|
||||
#: gtk/gtklabel.c:5709 gtk/gtktext.c:6181 gtk/gtktextview.c:9068
|
||||
msgid "Cu_t"
|
||||
msgstr "Cor_tar"
|
||||
|
||||
#: gtk/gtklabel.c:5700 gtk/gtktext.c:6139 gtk/gtktextview.c:9010
|
||||
#: gtk/gtklabel.c:5710 gtk/gtktext.c:6185 gtk/gtktextview.c:9072
|
||||
msgid "_Copy"
|
||||
msgstr "_Copiar"
|
||||
|
||||
#: gtk/gtklabel.c:5701 gtk/gtktext.c:6143 gtk/gtktextview.c:9014
|
||||
#: gtk/gtklabel.c:5711 gtk/gtktext.c:6189 gtk/gtktextview.c:9076
|
||||
msgid "_Paste"
|
||||
msgstr "_Pegar"
|
||||
|
||||
#: gtk/gtklabel.c:5707 gtk/gtktext.c:6156 gtk/gtktextview.c:9039
|
||||
#: gtk/gtklabel.c:5717 gtk/gtktext.c:6202 gtk/gtktextview.c:9101
|
||||
msgid "Select _All"
|
||||
msgstr "Seleccionar _todo"
|
||||
|
||||
#: gtk/gtklabel.c:5712
|
||||
#: gtk/gtklabel.c:5722
|
||||
msgid "_Open Link"
|
||||
msgstr "_Abrir ligazón"
|
||||
|
||||
#: gtk/gtklabel.c:5716
|
||||
#: gtk/gtklabel.c:5726
|
||||
msgid "Copy _Link Address"
|
||||
msgstr "Copiar enderezo da _ligazón"
|
||||
|
||||
#: gtk/gtklabel.c:5760 gtk/gtktext.c:2716 gtk/gtktextview.c:9088
|
||||
#: gtk/gtklabel.c:5770 gtk/gtktext.c:2724 gtk/gtktextview.c:9150
|
||||
msgid "Context menu"
|
||||
msgstr "Menú contextual"
|
||||
|
||||
@@ -3579,7 +3584,7 @@ msgstr ""
|
||||
"Non foi posíbel atopar ningunha aplicación rexistrada co nome «%s» para o "
|
||||
"elemento co URI «%s»"
|
||||
|
||||
#: gtk/gtksearchentry.c:767
|
||||
#: gtk/gtksearchentry.c:810
|
||||
msgid "Clear Entry"
|
||||
msgstr "Limpar entrada"
|
||||
|
||||
@@ -3670,15 +3675,15 @@ msgctxt "accessibility"
|
||||
msgid "Sidebar"
|
||||
msgstr "Barra lateral"
|
||||
|
||||
#: gtk/gtktext.c:6161 gtk/gtktextview.c:9044
|
||||
#: gtk/gtktext.c:6207 gtk/gtktextview.c:9106
|
||||
msgid "Insert _Emoji"
|
||||
msgstr "Inserir _emoticono"
|
||||
|
||||
#: gtk/gtktextview.c:9026
|
||||
#: gtk/gtktextview.c:9088
|
||||
msgid "_Undo"
|
||||
msgstr "_Desfacer"
|
||||
|
||||
#: gtk/gtktextview.c:9030
|
||||
#: gtk/gtktextview.c:9092
|
||||
msgid "_Redo"
|
||||
msgstr "_Refacer"
|
||||
|
||||
@@ -3877,37 +3882,37 @@ msgstr "Clases de estilo"
|
||||
msgid "CSS Property"
|
||||
msgstr "Propiedade CSS"
|
||||
|
||||
#: gtk/inspector/general.c:363
|
||||
#: gtk/inspector/general.c:370
|
||||
msgctxt "GL version"
|
||||
msgid "None"
|
||||
msgstr "Ningún"
|
||||
|
||||
#: gtk/inspector/general.c:441
|
||||
#: gtk/inspector/general.c:461
|
||||
msgctxt "GL version"
|
||||
msgid "Unknown"
|
||||
msgstr "Descoñecido"
|
||||
|
||||
#: gtk/inspector/general.c:503
|
||||
#: gtk/inspector/general.c:523
|
||||
msgctxt "Vulkan device"
|
||||
msgid "Disabled"
|
||||
msgstr "Desactivado"
|
||||
|
||||
#: gtk/inspector/general.c:504 gtk/inspector/general.c:505
|
||||
#: gtk/inspector/general.c:524 gtk/inspector/general.c:525
|
||||
msgctxt "Vulkan version"
|
||||
msgid "Disabled"
|
||||
msgstr "Desactivada"
|
||||
|
||||
#: gtk/inspector/general.c:555
|
||||
#: gtk/inspector/general.c:576
|
||||
msgctxt "Vulkan device"
|
||||
msgid "None"
|
||||
msgstr "Ningún"
|
||||
|
||||
#: gtk/inspector/general.c:556 gtk/inspector/general.c:557
|
||||
#: gtk/inspector/general.c:577 gtk/inspector/general.c:578
|
||||
msgctxt "Vulkan version"
|
||||
msgid "None"
|
||||
msgstr "Ningunha"
|
||||
|
||||
#: gtk/inspector/general.c:901
|
||||
#: gtk/inspector/general.c:922
|
||||
msgid "IM Context is hardcoded by GTK_IM_MODULE"
|
||||
msgstr "O contexto de IM está incrustado á man por GTK_IM_MODULE"
|
||||
|
||||
@@ -7819,18 +7824,21 @@ msgid ""
|
||||
"\n"
|
||||
"Commands:\n"
|
||||
" benchmark Benchmark rendering of a node\n"
|
||||
" compare Compare nodes or images\n"
|
||||
" info Provide information about the node\n"
|
||||
" show Show the node\n"
|
||||
" render Take a screenshot of the node\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"Usage:\n"
|
||||
" gtk4-rendernode-tool [COMMAND] [OPCIÓN…] FILE\n"
|
||||
"Uso:\n"
|
||||
" gtk4-rendernode-tool [ORDE] [OPCIÓN…] FICHEIRO\n"
|
||||
"\n"
|
||||
"Leva a cabo varias tarefas nos nodos do renderizador de GTK.\n"
|
||||
"\n"
|
||||
"Ordes:\n"
|
||||
" benchmark Proba de rendemento do renderizado dun nodo\n"
|
||||
"\n"
|
||||
" compare Comparar nodos ou imaxes\n"
|
||||
" info Fornecer unha información sobre un nodo\n"
|
||||
" show Mostrar un nodo\n"
|
||||
" render Sacar unha captura dun nodo\n"
|
||||
|
||||
@@ -12,8 +12,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gtk+.HEAD.he\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
|
||||
"POT-Creation-Date: 2024-02-17 12:16+0000\n"
|
||||
"PO-Revision-Date: 2024-02-17 23:05+0200\n"
|
||||
"POT-Creation-Date: 2024-02-23 01:06+0000\n"
|
||||
"PO-Revision-Date: 2024-02-24 18:36+0200\n"
|
||||
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
|
||||
"Language-Team: Hebrew\n"
|
||||
"Language: he\n"
|
||||
@@ -22,7 +22,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n==2 ? 1 : n>10 && n%10==0 ? "
|
||||
"2 : 3);\n"
|
||||
"X-Generator: Poedit 3.4.1\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
"X-Project-Style: default\n"
|
||||
|
||||
#: gdk/broadway/gdkbroadway-server.c:135
|
||||
@@ -123,9 +123,9 @@ msgstr "אין תצורות תואמות להעברת תכנים."
|
||||
msgid "No GL API allowed."
|
||||
msgstr "אין GL API מאופשר."
|
||||
|
||||
#: gdk/gdkglcontext.c:442 gdk/win32/gdkglcontext-win32-wgl.c:386
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:529
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:573 gdk/x11/gdkglcontext-glx.c:691
|
||||
#: gdk/gdkglcontext.c:442 gdk/win32/gdkglcontext-win32-wgl.c:395
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:538
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:582 gdk/x11/gdkglcontext-glx.c:691
|
||||
msgid "Unable to create a GL context"
|
||||
msgstr "Unable to create a GL context"
|
||||
|
||||
@@ -595,141 +595,140 @@ msgstr "פענוח התוכן מסוג MIME ‚%s’ נכשל"
|
||||
#: gdk/win32/gdkclipdrop-win32.c:719
|
||||
#, c-format
|
||||
msgid "Cannot claim clipboard ownership. OpenClipboard() timed out."
|
||||
msgstr "Cannot claim clipboard ownership. OpenClipboard() timed out."
|
||||
msgstr ""
|
||||
"לא ניתן לטעון לבעלות על לוח הגזירים. הזמן שהוקצב ל־OpenClipboard() הסתיים."
|
||||
|
||||
#: gdk/win32/gdkclipdrop-win32.c:729
|
||||
#, c-format
|
||||
msgid "Cannot claim clipboard ownership. Another process claimed it before us."
|
||||
msgstr ""
|
||||
"Cannot claim clipboard ownership. Another process claimed it before us."
|
||||
msgstr "לא ניתן לטעון לבעלות על לוח הגזירים. תהליך אחר טען אותה לפנינו."
|
||||
|
||||
#: gdk/win32/gdkclipdrop-win32.c:743
|
||||
#, c-format
|
||||
msgid "Cannot claim clipboard ownership. OpenClipboard() failed: 0x%lx."
|
||||
msgstr "Cannot claim clipboard ownership. OpenClipboard() failed: 0x%lx."
|
||||
msgstr "לא ניתן לטעון לבעלות על לוח הגזירים. OpenClipboard() נכשלה: 0x%lx."
|
||||
|
||||
#: gdk/win32/gdkclipdrop-win32.c:755
|
||||
#, c-format
|
||||
msgid "Cannot claim clipboard ownership. EmptyClipboard() failed: 0x%lx."
|
||||
msgstr "Cannot claim clipboard ownership. EmptyClipboard() failed: 0x%lx."
|
||||
msgstr "לא ניתן לטעון לבעלות על לוח הגזירים. EmptyClipboard() נכשלה: 0x%lx."
|
||||
|
||||
#: gdk/win32/gdkclipdrop-win32.c:798
|
||||
#, c-format
|
||||
msgid "Cannot set clipboard data. OpenClipboard() timed out."
|
||||
msgstr "Cannot set clipboard data. OpenClipboard() timed out."
|
||||
msgstr "לא ניתן להגדיר נתוני לוח גזירים. הזמן שהוקצב ל־OpenClipboard() הסתיים."
|
||||
|
||||
#: gdk/win32/gdkclipdrop-win32.c:808 gdk/win32/gdkclipdrop-win32.c:839
|
||||
#, c-format
|
||||
msgid "Cannot set clipboard data. Another process claimed clipboard ownership."
|
||||
msgstr ""
|
||||
"Cannot set clipboard data. Another process claimed clipboard ownership."
|
||||
msgstr "לא ניתן להגדיר נתוני לוח גזירים. תהליך אחר טען בעלות על לוח הגזירים."
|
||||
|
||||
#: gdk/win32/gdkclipdrop-win32.c:822
|
||||
#, c-format
|
||||
msgid "Cannot set clipboard data. OpenClipboard() failed: 0x%lx."
|
||||
msgstr "Cannot set clipboard data. OpenClipboard() failed: 0x%lx."
|
||||
msgstr "לא ניתן להגדיר נתוני לוח גזירים. OpenClipboard() נכשלה: 0x%lx."
|
||||
|
||||
#: gdk/win32/gdkclipdrop-win32.c:874
|
||||
#, c-format
|
||||
msgid "Cannot get clipboard data. GlobalLock(0x%p) failed: 0x%lx."
|
||||
msgstr "Cannot get clipboard data. GlobalLock(0x%p) failed: 0x%lx."
|
||||
msgstr "לא ניתן לקבל נתונים מלוח הגזירים. GlobalLock(0x%p) נכשלה: 0x%lx."
|
||||
|
||||
#: gdk/win32/gdkclipdrop-win32.c:885
|
||||
#, c-format
|
||||
msgid "Cannot get clipboard data. GlobalSize(0x%p) failed: 0x%lx."
|
||||
msgstr "Cannot get clipboard data. GlobalSize(0x%p) failed: 0x%lx."
|
||||
msgstr "לא ניתן לקבל נתונים מלוח הגזירים. GlobalSize(0x%p) נכשלה: 0x%lx."
|
||||
|
||||
#: gdk/win32/gdkclipdrop-win32.c:898
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Cannot get clipboard data. Failed to allocate %s bytes to store the data."
|
||||
msgstr ""
|
||||
"Cannot get clipboard data. Failed to allocate %s bytes to store the data."
|
||||
msgstr "לא ניתן לקבל נתונים מלוח הגזירים. הקצאת %s בתים לאחסון הנתונים נכשלה."
|
||||
|
||||
#: gdk/win32/gdkclipdrop-win32.c:930
|
||||
#, c-format
|
||||
msgid "Cannot get clipboard data. OpenClipboard() timed out."
|
||||
msgstr "Cannot get clipboard data. OpenClipboard() timed out."
|
||||
msgstr ""
|
||||
"לא ניתן לקבל נתונים מלוח הגזירים. הזמן שהוקצב ל־OpenClipboard() הסתיים."
|
||||
|
||||
#: gdk/win32/gdkclipdrop-win32.c:940
|
||||
#, c-format
|
||||
msgid "Cannot get clipboard data. Clipboard ownership changed."
|
||||
msgstr "Cannot get clipboard data. Clipboard ownership changed."
|
||||
msgstr "לא ניתן לקבל נתונים מלוח הגזירים. הבעלות על לוח הגזירים הועברה."
|
||||
|
||||
#: gdk/win32/gdkclipdrop-win32.c:950
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Cannot get clipboard data. Clipboard data changed before we could get it."
|
||||
msgstr ""
|
||||
"Cannot get clipboard data. Clipboard data changed before we could get it."
|
||||
"לא ניתן לקבל נתונים מלוח הגזירים. לוח הגזירים השתנה לפני שהצלחנו לקבל אותם."
|
||||
|
||||
#: gdk/win32/gdkclipdrop-win32.c:967
|
||||
#, c-format
|
||||
msgid "Cannot get clipboard data. OpenClipboard() failed: 0x%lx."
|
||||
msgstr "Cannot get clipboard data. OpenClipboard() failed: 0x%lx."
|
||||
msgstr "לא ניתן לקבל נתונים מלוח הגזירים. OpenClipboard() נכשלה: 0x%lx."
|
||||
|
||||
#: gdk/win32/gdkclipdrop-win32.c:992
|
||||
#, c-format
|
||||
msgid "Cannot get clipboard data. No compatible transfer format found."
|
||||
msgstr "Cannot get clipboard data. No compatible transfer format found."
|
||||
msgstr "לא ניתן לקבל נתונים מלוח הגזירים. לא נמצאה תבנית העברה תואמת."
|
||||
|
||||
#: gdk/win32/gdkclipdrop-win32.c:1002
|
||||
#, c-format
|
||||
msgid "Cannot get clipboard data. GetClipboardData() failed: 0x%lx."
|
||||
msgstr "Cannot get clipboard data. GetClipboardData() failed: 0x%lx."
|
||||
msgstr "לא ניתן לקבל נתונים מלוח הגזירים. GetClipboardData() נכשלה: 0x%lx."
|
||||
|
||||
#: gdk/win32/gdkdrop-win32.c:949
|
||||
#, c-format
|
||||
msgid "Cannot get DnD data. GlobalLock(0x%p) failed: 0x%lx."
|
||||
msgstr "Cannot get DnD data. GlobalLock(0x%p) failed: 0x%lx."
|
||||
msgstr "לא ניתן לקבל נתוני „לא להפריע”. GlobalLock(0x%p) נכשלה: 0x%lx."
|
||||
|
||||
#: gdk/win32/gdkdrop-win32.c:958
|
||||
#, c-format
|
||||
msgid "Cannot get DnD data. GlobalSize(0x%p) failed: 0x%lx."
|
||||
msgstr "Cannot get DnD data. GlobalSize(0x%p) failed: 0x%lx."
|
||||
msgstr "לא ניתן לקבל נתוני „לא להפריע”. GlobalSize(0x%p) נכשלה: 0x%lx."
|
||||
|
||||
#: gdk/win32/gdkdrop-win32.c:969
|
||||
#, c-format
|
||||
msgid "Cannot get DnD data. Failed to allocate %s bytes to store the data."
|
||||
msgstr "Cannot get DnD data. Failed to allocate %s bytes to store the data."
|
||||
msgstr "לא ניתן לקבל נתוני „לא להפריע”. הקצאת %s בתים לאחסון הנתונים נכשלה."
|
||||
|
||||
#: gdk/win32/gdkdrop-win32.c:1037
|
||||
#, c-format
|
||||
msgid "GDK surface 0x%p is not registered as a drop target"
|
||||
msgstr "GDK surface 0x%p is not registered as a drop target"
|
||||
msgstr "משטח GDK 0x%p לא רשום כיעד השלכה בגרירה"
|
||||
|
||||
#: gdk/win32/gdkdrop-win32.c:1044
|
||||
#, c-format
|
||||
msgid "Target context record 0x%p has no data object"
|
||||
msgstr "Target context record 0x%p has no data object"
|
||||
msgstr "לרשומת ההקשר המיועדת 0x%p אין עצם נתונים"
|
||||
|
||||
#: gdk/win32/gdkdrop-win32.c:1082
|
||||
#, c-format
|
||||
msgid "IDataObject_GetData (0x%x) failed, returning 0x%lx"
|
||||
msgstr "IDataObject_GetData (0x%x) failed, returning 0x%lx"
|
||||
msgstr "IDataObject_GetData (0x%x) נכשלה, הוחזר 0x%lx"
|
||||
|
||||
#: gdk/win32/gdkdrop-win32.c:1114
|
||||
#, c-format
|
||||
msgid "Failed to transmute DnD data W32 format 0x%x to %p (%s)"
|
||||
msgstr "Failed to transmute DnD data W32 format 0x%x to %p (%s)"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:320
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:329
|
||||
msgid "No GL implementation is available"
|
||||
msgstr "אין מימוש GL זמין"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:395
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:404
|
||||
#, c-format
|
||||
msgid "WGL version %d.%d is too low, need at least %d.%d"
|
||||
msgstr "גרסת ה־WGL %d.%d ישנה מדי. צריך לפחות %d.%d"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:413
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:422
|
||||
#, c-format
|
||||
msgid "GL implementation cannot share GL contexts"
|
||||
msgstr "מימוש GL לא יכול לשתף הקשרי GL"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:693
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:702
|
||||
msgid "No available configurations for the given pixel format"
|
||||
msgstr "No available configurations for the given pixel format"
|
||||
msgstr "לא סופקו הגדרות לתצורת הפיקסלים שסופקה"
|
||||
|
||||
#: gdk/win32/gdkhdataoutputstream-win32.c:63
|
||||
msgid "writing a closed stream"
|
||||
@@ -746,7 +745,7 @@ msgstr "GlobalReAlloc() נכשלה: "
|
||||
|
||||
#: gdk/win32/gdkhdataoutputstream-win32.c:105
|
||||
msgid "Ran out of buffer space (buffer size is fixed)"
|
||||
msgstr "Ran out of buffer space (buffer size is fixed)"
|
||||
msgstr "נגמר המקום בזיכרון החוצץ (גודל הזיכרון החוצץ קבוע)"
|
||||
|
||||
#: gdk/win32/gdkhdataoutputstream-win32.c:203
|
||||
msgid "Can’t transmute a single handle"
|
||||
@@ -790,7 +789,7 @@ msgstr "מנהל לוח הגזירים לא יכול לאחסן את הבחיר
|
||||
|
||||
#: gdk/x11/gdkclipboard-x11.c:649
|
||||
msgid "Cannot store clipboard. No clipboard manager is active."
|
||||
msgstr "Cannot store clipboard. No clipboard manager is active."
|
||||
msgstr "אי אפשר לאחסן את לוח גזירים. אין מנהל לוח גזירים פעיל."
|
||||
|
||||
#: gdk/x11/gdkglcontext-glx.c:810
|
||||
msgid "No GLX configurations available"
|
||||
@@ -807,7 +806,7 @@ msgstr "אין תמיכה ב־GLX"
|
||||
#: gdk/x11/gdkselectioninputstream-x11.c:465
|
||||
#, c-format
|
||||
msgid "Format %s not supported"
|
||||
msgstr "Format %s not supported"
|
||||
msgstr "אין תמיכה בתצורה %s"
|
||||
|
||||
#: gdk/x11/gdktextlistconverter-x11.c:65 gdk/x11/gdktextlistconverter-x11.c:105
|
||||
msgid "Not enough space in destination"
|
||||
@@ -1811,6 +1810,11 @@ msgctxt "accessibility"
|
||||
msgid "comment"
|
||||
msgstr "הערה"
|
||||
|
||||
#: gtk/gtkaccessible.c:874
|
||||
msgctxt "accessibility"
|
||||
msgid "terminal"
|
||||
msgstr "מסוף"
|
||||
|
||||
#: gtk/gtkalertdialog.c:668 gtk/print/gtkcustompaperunixdialog.c:322
|
||||
#: gtk/gtkmessagedialog.c:166 gtk/ui/gtkassistant.ui:40
|
||||
msgid "_Close"
|
||||
@@ -2384,7 +2388,7 @@ msgid "If you delete an item, it will be permanently lost."
|
||||
msgstr "אם פריט ימחק, הוא יאבד לצמיתות."
|
||||
|
||||
#: gtk/gtkfilechooserwidget.c:1188 gtk/gtkfilechooserwidget.c:1786
|
||||
#: gtk/gtklabel.c:5702 gtk/gtktext.c:6147 gtk/gtktextview.c:9018
|
||||
#: gtk/gtklabel.c:5712 gtk/gtktext.c:6193 gtk/gtktextview.c:9080
|
||||
msgid "_Delete"
|
||||
msgstr "מ_חיקה"
|
||||
|
||||
@@ -2726,32 +2730,32 @@ msgstr "סגירה"
|
||||
msgid "Close the infobar"
|
||||
msgstr "סגירת פס המידע"
|
||||
|
||||
#: gtk/gtklabel.c:5699 gtk/gtktext.c:6135 gtk/gtktextview.c:9006
|
||||
#: gtk/gtklabel.c:5709 gtk/gtktext.c:6181 gtk/gtktextview.c:9068
|
||||
msgid "Cu_t"
|
||||
msgstr "_גזירה"
|
||||
|
||||
#: gtk/gtklabel.c:5700 gtk/gtktext.c:6139 gtk/gtktextview.c:9010
|
||||
#: gtk/gtklabel.c:5710 gtk/gtktext.c:6185 gtk/gtktextview.c:9072
|
||||
msgid "_Copy"
|
||||
msgstr "ה_עתקה"
|
||||
|
||||
#: gtk/gtklabel.c:5701 gtk/gtktext.c:6143 gtk/gtktextview.c:9014
|
||||
#: gtk/gtklabel.c:5711 gtk/gtktext.c:6189 gtk/gtktextview.c:9076
|
||||
msgid "_Paste"
|
||||
msgstr "ה_דבקה"
|
||||
|
||||
#: gtk/gtklabel.c:5707 gtk/gtktext.c:6156 gtk/gtktextview.c:9039
|
||||
#: gtk/gtklabel.c:5717 gtk/gtktext.c:6202 gtk/gtktextview.c:9101
|
||||
msgid "Select _All"
|
||||
msgstr "בחירה בה_כול"
|
||||
|
||||
#: gtk/gtklabel.c:5712
|
||||
#: gtk/gtklabel.c:5722
|
||||
msgid "_Open Link"
|
||||
msgstr "_פתיחת קישור"
|
||||
|
||||
#: gtk/gtklabel.c:5716
|
||||
#: gtk/gtklabel.c:5726
|
||||
msgid "Copy _Link Address"
|
||||
msgstr "העתקת כתובת ה_קישור"
|
||||
|
||||
# msgctxt "OpenType layout"
|
||||
#: gtk/gtklabel.c:5760 gtk/gtktext.c:2716 gtk/gtktextview.c:9088
|
||||
#: gtk/gtklabel.c:5770 gtk/gtktext.c:2724 gtk/gtktextview.c:9150
|
||||
msgid "Context menu"
|
||||
msgstr "תפריט הקשר"
|
||||
|
||||
@@ -3599,7 +3603,7 @@ msgstr "לא נתן להעביר את הפריט עם הכתובת „%s” אל
|
||||
msgid "No registered application with name “%s” for item with URI “%s” found"
|
||||
msgstr "לא נמצא יישום הרשום בשם „%s” עבור הפריט בעל הכתובת „%s”"
|
||||
|
||||
#: gtk/gtksearchentry.c:767
|
||||
#: gtk/gtksearchentry.c:810
|
||||
msgid "Clear Entry"
|
||||
msgstr "פינוי הרשומה"
|
||||
|
||||
@@ -3690,15 +3694,15 @@ msgctxt "accessibility"
|
||||
msgid "Sidebar"
|
||||
msgstr "סרגל צד"
|
||||
|
||||
#: gtk/gtktext.c:6161 gtk/gtktextview.c:9044
|
||||
#: gtk/gtktext.c:6207 gtk/gtktextview.c:9106
|
||||
msgid "Insert _Emoji"
|
||||
msgstr "הוספת _רגשון"
|
||||
|
||||
#: gtk/gtktextview.c:9026
|
||||
#: gtk/gtktextview.c:9088
|
||||
msgid "_Undo"
|
||||
msgstr "_ביטול"
|
||||
|
||||
#: gtk/gtktextview.c:9030
|
||||
#: gtk/gtktextview.c:9092
|
||||
msgid "_Redo"
|
||||
msgstr "ביצוע _שוב"
|
||||
|
||||
@@ -7831,6 +7835,18 @@ msgstr "פענוח ‚%s’ כמספר נכשל"
|
||||
|
||||
#: tools/gtk-rendernode-tool.c:35
|
||||
#, c-format
|
||||
#| msgid ""
|
||||
#| "Usage:\n"
|
||||
#| " gtk4-rendernode-tool [COMMAND] [OPTION…] FILE\n"
|
||||
#| "\n"
|
||||
#| "Perform various tasks on GTK render nodes.\n"
|
||||
#| "\n"
|
||||
#| "Commands:\n"
|
||||
#| " benchmark Benchmark rendering of a node\n"
|
||||
#| " info Provide information about the node\n"
|
||||
#| " show Show the node\n"
|
||||
#| " render Take a screenshot of the node\n"
|
||||
#| "\n"
|
||||
msgid ""
|
||||
"Usage:\n"
|
||||
" gtk4-rendernode-tool [COMMAND] [OPTION…] FILE\n"
|
||||
@@ -7839,21 +7855,23 @@ msgid ""
|
||||
"\n"
|
||||
"Commands:\n"
|
||||
" benchmark Benchmark rendering of a node\n"
|
||||
" compare Compare nodes or images\n"
|
||||
" info Provide information about the node\n"
|
||||
" show Show the node\n"
|
||||
" render Take a screenshot of the node\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"Usage:\n"
|
||||
"שימוש:\n"
|
||||
" gtk4-rendernode-tool [COMMAND] [OPTION…] FILE\n"
|
||||
"\n"
|
||||
"Perform various tasks on GTK render nodes.\n"
|
||||
"ביצוע מגוון פעולות על צומתי עיבוד של GTK.\n"
|
||||
"\n"
|
||||
"Commands:\n"
|
||||
" benchmark Benchmark rendering of a node\n"
|
||||
" info Provide information about the node\n"
|
||||
" show Show the node\n"
|
||||
" render Take a screenshot of the node\n"
|
||||
"פקודות:\n"
|
||||
" benchmark מדידת ביצועי העיבוד של צומת\n"
|
||||
" compare השוואת צמתים או תמונות\n"
|
||||
" info אספקת מידע על הצומת\n"
|
||||
" show הצגת הצומת\n"
|
||||
" render צילום הצומת\n"
|
||||
"\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-benchmark.c:94
|
||||
@@ -7938,7 +7956,6 @@ msgstr "יצירת SVG נכשלה: %s\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-render.c:150
|
||||
#, c-format
|
||||
#| msgid "Failed to rewrite header\n"
|
||||
msgid "Failed to create renderer: %s\n"
|
||||
msgstr "יצירת מנגנון עיבוד נכשלה: %s\n"
|
||||
|
||||
@@ -8174,8 +8191,8 @@ msgstr ""
|
||||
#~ msgid "Switch to list view"
|
||||
#~ msgstr "החלפה לתצוגת רשימה"
|
||||
|
||||
#~ msgid "default:LTR"
|
||||
#~ msgstr "default:RTL"
|
||||
msgid "default:LTR"
|
||||
msgstr "default:RTL"
|
||||
|
||||
#~ msgid "Other application…"
|
||||
#~ msgstr "יישום אחר…"
|
||||
|
||||
@@ -11,8 +11,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gtk\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
|
||||
"POT-Creation-Date: 2024-02-12 01:46+0000\n"
|
||||
"PO-Revision-Date: 2024-02-12 12:39+0100\n"
|
||||
"POT-Creation-Date: 2024-02-22 15:33+0000\n"
|
||||
"PO-Revision-Date: 2024-02-22 19:48+0100\n"
|
||||
"Last-Translator: Ekaterine Papava <papava.e@gtu.ge>\n"
|
||||
"Language-Team: Georgian <http://mail.gnome.org/mailman/listinfo/gnome-ge-"
|
||||
"list>\n"
|
||||
@@ -51,7 +51,7 @@ msgstr "შემცველობის \"%s\"-ად გამოტანა
|
||||
msgid "Cannot provide contents as %s"
|
||||
msgstr "შემცველობის %s-ად გამოტანა შეუძლებელია"
|
||||
|
||||
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:462
|
||||
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:459
|
||||
msgid "The current backend does not support OpenGL"
|
||||
msgstr "მიმდინარე უკანაბოლოს OpenGL-ის მხარდაჭერა არ გააჩნია"
|
||||
|
||||
@@ -114,32 +114,32 @@ msgstr "სხვა აპლიკაციებიდან DnD მხარ
|
||||
msgid "No compatible formats to transfer contents."
|
||||
msgstr "შემცველობის გადატანის თავსებადი ფორმატების გარეშე."
|
||||
|
||||
#: gdk/gdkglcontext.c:422 gdk/x11/gdkglcontext-glx.c:645
|
||||
#: gdk/gdkglcontext.c:419 gdk/x11/gdkglcontext-glx.c:645
|
||||
msgid "No GL API allowed."
|
||||
msgstr "GL API არ არის დაშვებული."
|
||||
|
||||
#: gdk/gdkglcontext.c:445 gdk/win32/gdkglcontext-win32-wgl.c:386
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:529
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:573 gdk/x11/gdkglcontext-glx.c:691
|
||||
#: gdk/gdkglcontext.c:442 gdk/win32/gdkglcontext-win32-wgl.c:395
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:538
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:582 gdk/x11/gdkglcontext-glx.c:691
|
||||
msgid "Unable to create a GL context"
|
||||
msgstr "GL-ის კონტექსტის შექმნა შეუძლებელია"
|
||||
|
||||
#: gdk/gdkglcontext.c:1306
|
||||
#: gdk/gdkglcontext.c:1303
|
||||
msgid "OpenGL ES disabled via GDK_DEBUG"
|
||||
msgstr "OpenGL ES გამორთულია GDK_DEBUG საშუალებით"
|
||||
|
||||
#: gdk/gdkglcontext.c:1318
|
||||
#: gdk/gdkglcontext.c:1315
|
||||
msgid "OpenGL disabled via GDK_DEBUG"
|
||||
msgstr "OpenGL გამორთულია GDK_DEBUG საშუალებით"
|
||||
|
||||
#: gdk/gdkglcontext.c:1329
|
||||
#: gdk/gdkglcontext.c:1326
|
||||
#, c-format
|
||||
msgid "Application does not support %s API"
|
||||
msgstr "აპლიკაციას %s-ის API-ის მხარდაჭერა არ გააცნია"
|
||||
|
||||
#. translators: This is about OpenGL backend names, like
|
||||
#. * "Trying to use X11 GLX, but EGL is already in use"
|
||||
#: gdk/gdkglcontext.c:2115
|
||||
#: gdk/gdkglcontext.c:2112
|
||||
#, c-format
|
||||
msgid "Trying to use %s, but %s is already in use"
|
||||
msgstr "%s გამოყენების მცდელობა, მაგრამ %s უკვე გამოიყენება"
|
||||
@@ -736,21 +736,21 @@ msgstr "IDataObject_GetData (0x%x) -ის შეცდომა, დააბ
|
||||
msgid "Failed to transmute DnD data W32 format 0x%x to %p (%s)"
|
||||
msgstr "DnD-ის W32 მონაცემების ფორმატის 0x%x-დან %p-ში (%s) გადაყვანის შეცდომა"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:320
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:329
|
||||
msgid "No GL implementation is available"
|
||||
msgstr "GL-ის იმპლემენტაცია არ არსებობს"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:395
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:404
|
||||
#, c-format
|
||||
msgid "WGL version %d.%d is too low, need at least %d.%d"
|
||||
msgstr "WGL-ის ვერსია %d.%d ძალიან ძველია. საჭიროა მინიმუმ %d.%d"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:413
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:422
|
||||
#, c-format
|
||||
msgid "GL implementation cannot share GL contexts"
|
||||
msgstr "GL-ის განხორციელებებს GL-ის კონტექსტების გაზიარება არ შეუძლიათ"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:693
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:702
|
||||
msgid "No available configurations for the given pixel format"
|
||||
msgstr "მითითებული პიქსელის ფორმატისთვის ხელმისაწვდომი კონფიგურაციების გარეშე"
|
||||
|
||||
@@ -1780,6 +1780,11 @@ msgctxt "accessibility"
|
||||
msgid "comment"
|
||||
msgstr "კომენტარი"
|
||||
|
||||
#: gtk/gtkaccessible.c:874
|
||||
msgctxt "accessibility"
|
||||
msgid "terminal"
|
||||
msgstr "ტერმინალი"
|
||||
|
||||
#: gtk/gtkalertdialog.c:668 gtk/print/gtkcustompaperunixdialog.c:322
|
||||
#: gtk/gtkmessagedialog.c:166 gtk/ui/gtkassistant.ui:40
|
||||
msgid "_Close"
|
||||
@@ -2353,7 +2358,7 @@ msgid "If you delete an item, it will be permanently lost."
|
||||
msgstr "თუ წაშლით ელემენტს, ის სამუდამოდ დაიკარგება."
|
||||
|
||||
#: gtk/gtkfilechooserwidget.c:1188 gtk/gtkfilechooserwidget.c:1786
|
||||
#: gtk/gtklabel.c:5702 gtk/gtktext.c:6147 gtk/gtktextview.c:9018
|
||||
#: gtk/gtklabel.c:5712 gtk/gtktext.c:6193 gtk/gtktextview.c:9080
|
||||
msgid "_Delete"
|
||||
msgstr "წაშლა"
|
||||
|
||||
@@ -2692,31 +2697,31 @@ msgstr "დახურვა"
|
||||
msgid "Close the infobar"
|
||||
msgstr "საინფორმაციო ზოლის დახურვა"
|
||||
|
||||
#: gtk/gtklabel.c:5699 gtk/gtktext.c:6135 gtk/gtktextview.c:9006
|
||||
#: gtk/gtklabel.c:5709 gtk/gtktext.c:6181 gtk/gtktextview.c:9068
|
||||
msgid "Cu_t"
|
||||
msgstr "ამოჭრა"
|
||||
|
||||
#: gtk/gtklabel.c:5700 gtk/gtktext.c:6139 gtk/gtktextview.c:9010
|
||||
#: gtk/gtklabel.c:5710 gtk/gtktext.c:6185 gtk/gtktextview.c:9072
|
||||
msgid "_Copy"
|
||||
msgstr "ასლი"
|
||||
|
||||
#: gtk/gtklabel.c:5701 gtk/gtktext.c:6143 gtk/gtktextview.c:9014
|
||||
#: gtk/gtklabel.c:5711 gtk/gtktext.c:6189 gtk/gtktextview.c:9076
|
||||
msgid "_Paste"
|
||||
msgstr "ჩასმა"
|
||||
|
||||
#: gtk/gtklabel.c:5707 gtk/gtktext.c:6156 gtk/gtktextview.c:9039
|
||||
#: gtk/gtklabel.c:5717 gtk/gtktext.c:6202 gtk/gtktextview.c:9101
|
||||
msgid "Select _All"
|
||||
msgstr "ყველაფრის _მონიშვნა"
|
||||
|
||||
#: gtk/gtklabel.c:5712
|
||||
#: gtk/gtklabel.c:5722
|
||||
msgid "_Open Link"
|
||||
msgstr "_ბმულის გახსნა"
|
||||
|
||||
#: gtk/gtklabel.c:5716
|
||||
#: gtk/gtklabel.c:5726
|
||||
msgid "Copy _Link Address"
|
||||
msgstr "დაა_კოპირე ბმულის მისამართი"
|
||||
|
||||
#: gtk/gtklabel.c:5760 gtk/gtktext.c:2716 gtk/gtktextview.c:9088
|
||||
#: gtk/gtklabel.c:5770 gtk/gtktext.c:2724 gtk/gtktextview.c:9150
|
||||
msgid "Context menu"
|
||||
msgstr "კონტექსტური მენიუ"
|
||||
|
||||
@@ -3560,7 +3565,7 @@ msgstr ""
|
||||
"რეგისტრირებული აპლიკაცია სახელით \"%s\" ჩანაწერისთვის ბმულით \"%s\" "
|
||||
"აღმოჩენილი არაა"
|
||||
|
||||
#: gtk/gtksearchentry.c:767
|
||||
#: gtk/gtksearchentry.c:810
|
||||
msgid "Clear Entry"
|
||||
msgstr "ჩანაწერის გასუფთავება"
|
||||
|
||||
@@ -3651,15 +3656,15 @@ msgctxt "accessibility"
|
||||
msgid "Sidebar"
|
||||
msgstr "გვერდითა ზოლი"
|
||||
|
||||
#: gtk/gtktext.c:6161 gtk/gtktextview.c:9044
|
||||
#: gtk/gtktext.c:6207 gtk/gtktextview.c:9106
|
||||
msgid "Insert _Emoji"
|
||||
msgstr "ემოჯის _ჩასმა"
|
||||
|
||||
#: gtk/gtktextview.c:9026
|
||||
#: gtk/gtktextview.c:9088
|
||||
msgid "_Undo"
|
||||
msgstr "_დაბრუნება"
|
||||
|
||||
#: gtk/gtktextview.c:9030
|
||||
#: gtk/gtktextview.c:9092
|
||||
msgid "_Redo"
|
||||
msgstr "_გამეორება"
|
||||
|
||||
@@ -3857,37 +3862,37 @@ msgstr "სტილის კლასები"
|
||||
msgid "CSS Property"
|
||||
msgstr "CSS-ის თვისება"
|
||||
|
||||
#: gtk/inspector/general.c:363
|
||||
#: gtk/inspector/general.c:370
|
||||
msgctxt "GL version"
|
||||
msgid "None"
|
||||
msgstr "არცერთი"
|
||||
|
||||
#: gtk/inspector/general.c:441
|
||||
#: gtk/inspector/general.c:461
|
||||
msgctxt "GL version"
|
||||
msgid "Unknown"
|
||||
msgstr "უცნობი"
|
||||
|
||||
#: gtk/inspector/general.c:503
|
||||
#: gtk/inspector/general.c:523
|
||||
msgctxt "Vulkan device"
|
||||
msgid "Disabled"
|
||||
msgstr "გამორთულია"
|
||||
|
||||
#: gtk/inspector/general.c:504 gtk/inspector/general.c:505
|
||||
#: gtk/inspector/general.c:524 gtk/inspector/general.c:525
|
||||
msgctxt "Vulkan version"
|
||||
msgid "Disabled"
|
||||
msgstr "გამორთულია"
|
||||
|
||||
#: gtk/inspector/general.c:555
|
||||
#: gtk/inspector/general.c:576
|
||||
msgctxt "Vulkan device"
|
||||
msgid "None"
|
||||
msgstr "არცერთი"
|
||||
|
||||
#: gtk/inspector/general.c:556 gtk/inspector/general.c:557
|
||||
#: gtk/inspector/general.c:577 gtk/inspector/general.c:578
|
||||
msgctxt "Vulkan version"
|
||||
msgid "None"
|
||||
msgstr "არცერთი"
|
||||
|
||||
#: gtk/inspector/general.c:901
|
||||
#: gtk/inspector/general.c:922
|
||||
msgid "IM Context is hardcoded by GTK_IM_MODULE"
|
||||
msgstr "IM-ის კონტექსტი GTK_IM_MODULE-ში ხელითაა ჩაწერილი"
|
||||
|
||||
@@ -7789,6 +7794,7 @@ msgid ""
|
||||
"\n"
|
||||
"Commands:\n"
|
||||
" benchmark Benchmark rendering of a node\n"
|
||||
" compare Compare nodes or images\n"
|
||||
" info Provide information about the node\n"
|
||||
" show Show the node\n"
|
||||
" render Take a screenshot of the node\n"
|
||||
@@ -7801,6 +7807,7 @@ msgstr ""
|
||||
"\n"
|
||||
"ბრძანებები:\n"
|
||||
" benchmark კვანძის რენდერის წარმადობის გაზომვა\n"
|
||||
" compare კვანძების ან გამოსახულებების შედარება\n"
|
||||
" info ამ კვანძის შესახებ ინფორმაციის გამოტანა\n"
|
||||
" show ამ კვანძის ჩვენება\n"
|
||||
" render კვანძის ეკრანის ანაბეჭდის აღება\n"
|
||||
|
||||
@@ -22,9 +22,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gtk\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
|
||||
"POT-Creation-Date: 2024-02-12 22:55+0000\n"
|
||||
"PO-Revision-Date: 2024-02-13 15:09+0300\n"
|
||||
"Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
|
||||
"POT-Creation-Date: 2024-02-22 18:50+0000\n"
|
||||
"PO-Revision-Date: 2024-02-22 21:54+0300\n"
|
||||
"Last-Translator: Sabri Ünal <libreajans@gmail.com>\n"
|
||||
"Language-Team: Türkçe <takim@gnome.org.tr>\n"
|
||||
"Language: tr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -61,7 +61,7 @@ msgstr "İçerikler “%s” olarak sağlanamıyor"
|
||||
msgid "Cannot provide contents as %s"
|
||||
msgstr "İçerikler %s olarak sağlanamıyor"
|
||||
|
||||
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:462
|
||||
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:459
|
||||
msgid "The current backend does not support OpenGL"
|
||||
msgstr "Şimdiki arka uç OpenGL’i desteklemiyor"
|
||||
|
||||
@@ -125,32 +125,32 @@ msgstr "Diğer uygulamalardan sürükle ve bırak desteklenmemektedir."
|
||||
msgid "No compatible formats to transfer contents."
|
||||
msgstr "İçerikleri aktarmak için uyumlu biçim yok."
|
||||
|
||||
#: gdk/gdkglcontext.c:422 gdk/x11/gdkglcontext-glx.c:645
|
||||
#: gdk/gdkglcontext.c:419 gdk/x11/gdkglcontext-glx.c:645
|
||||
msgid "No GL API allowed."
|
||||
msgstr "İzin verilen GP API yok."
|
||||
|
||||
#: gdk/gdkglcontext.c:445 gdk/win32/gdkglcontext-win32-wgl.c:386
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:529
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:573 gdk/x11/gdkglcontext-glx.c:691
|
||||
#: gdk/gdkglcontext.c:442 gdk/win32/gdkglcontext-win32-wgl.c:395
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:538
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:582 gdk/x11/gdkglcontext-glx.c:691
|
||||
msgid "Unable to create a GL context"
|
||||
msgstr "GL bağlamı oluşturulamadı"
|
||||
|
||||
#: gdk/gdkglcontext.c:1306
|
||||
#: gdk/gdkglcontext.c:1303
|
||||
msgid "OpenGL ES disabled via GDK_DEBUG"
|
||||
msgstr "OpenGL ES, GDK_DEBUG aracılığıyla devre dışı bırakılmış"
|
||||
|
||||
#: gdk/gdkglcontext.c:1318
|
||||
#: gdk/gdkglcontext.c:1315
|
||||
msgid "OpenGL disabled via GDK_DEBUG"
|
||||
msgstr "OpenGL, GDK_DEBUG aracılığıyla devre dışı bırakılmış"
|
||||
|
||||
#: gdk/gdkglcontext.c:1329
|
||||
#: gdk/gdkglcontext.c:1326
|
||||
#, c-format
|
||||
msgid "Application does not support %s API"
|
||||
msgstr "Uygulama %s APIsini desteklemiyor"
|
||||
|
||||
#. translators: This is about OpenGL backend names, like
|
||||
#. * "Trying to use X11 GLX, but EGL is already in use"
|
||||
#: gdk/gdkglcontext.c:2115
|
||||
#: gdk/gdkglcontext.c:2112
|
||||
#, c-format
|
||||
msgid "Trying to use %s, but %s is already in use"
|
||||
msgstr "%s kullanılmaya çalışılıyor ancak şu anda %s kullanılıyor"
|
||||
@@ -715,21 +715,21 @@ msgstr "IDataObject_GetData (0x%x) başarısız, 0x%lx döndürüyor"
|
||||
msgid "Failed to transmute DnD data W32 format 0x%x to %p (%s)"
|
||||
msgstr "W32 biçimli 0x%x DnD verisi, %p hedefine dönüştürülemedi (%s)"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:320
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:329
|
||||
msgid "No GL implementation is available"
|
||||
msgstr "Kullanılabilir GL uygulaması yok"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:395
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:404
|
||||
#, c-format
|
||||
msgid "WGL version %d.%d is too low, need at least %d.%d"
|
||||
msgstr "WGL sürümü %d.%d çok düşük, en az %d.%d gerekiyor"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:413
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:422
|
||||
#, c-format
|
||||
msgid "GL implementation cannot share GL contexts"
|
||||
msgstr "GL uygulaması GL bağlamlarını paylaşamaz"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:693
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:702
|
||||
msgid "No available configurations for the given pixel format"
|
||||
msgstr "Verilen piksel biçimi için kullanılabilir yapılandırma yok"
|
||||
|
||||
@@ -1756,6 +1756,11 @@ msgctxt "accessibility"
|
||||
msgid "comment"
|
||||
msgstr "yorum"
|
||||
|
||||
#: gtk/gtkaccessible.c:874
|
||||
msgctxt "accessibility"
|
||||
msgid "terminal"
|
||||
msgstr "uçbirim"
|
||||
|
||||
#: gtk/gtkalertdialog.c:668 gtk/print/gtkcustompaperunixdialog.c:322
|
||||
#: gtk/gtkmessagedialog.c:166 gtk/ui/gtkassistant.ui:40
|
||||
msgid "_Close"
|
||||
@@ -2329,7 +2334,7 @@ msgid "If you delete an item, it will be permanently lost."
|
||||
msgstr "Eğer bir öge silerseniz kalıcı olarak kaybolur."
|
||||
|
||||
#: gtk/gtkfilechooserwidget.c:1188 gtk/gtkfilechooserwidget.c:1786
|
||||
#: gtk/gtklabel.c:5702 gtk/gtktext.c:6147 gtk/gtktextview.c:9018
|
||||
#: gtk/gtklabel.c:5712 gtk/gtktext.c:6193 gtk/gtktextview.c:9080
|
||||
msgid "_Delete"
|
||||
msgstr "_Sil"
|
||||
|
||||
@@ -2670,31 +2675,31 @@ msgstr "Kapat"
|
||||
msgid "Close the infobar"
|
||||
msgstr "Bilgi çubuğunu kapat"
|
||||
|
||||
#: gtk/gtklabel.c:5699 gtk/gtktext.c:6135 gtk/gtktextview.c:9006
|
||||
#: gtk/gtklabel.c:5709 gtk/gtktext.c:6181 gtk/gtktextview.c:9068
|
||||
msgid "Cu_t"
|
||||
msgstr "Ke_s"
|
||||
|
||||
#: gtk/gtklabel.c:5700 gtk/gtktext.c:6139 gtk/gtktextview.c:9010
|
||||
#: gtk/gtklabel.c:5710 gtk/gtktext.c:6185 gtk/gtktextview.c:9072
|
||||
msgid "_Copy"
|
||||
msgstr "_Kopyala"
|
||||
|
||||
#: gtk/gtklabel.c:5701 gtk/gtktext.c:6143 gtk/gtktextview.c:9014
|
||||
#: gtk/gtklabel.c:5711 gtk/gtktext.c:6189 gtk/gtktextview.c:9076
|
||||
msgid "_Paste"
|
||||
msgstr "_Yapıştır"
|
||||
|
||||
#: gtk/gtklabel.c:5707 gtk/gtktext.c:6156 gtk/gtktextview.c:9039
|
||||
#: gtk/gtklabel.c:5717 gtk/gtktext.c:6202 gtk/gtktextview.c:9101
|
||||
msgid "Select _All"
|
||||
msgstr "_Tümünü Seç"
|
||||
|
||||
#: gtk/gtklabel.c:5712
|
||||
#: gtk/gtklabel.c:5722
|
||||
msgid "_Open Link"
|
||||
msgstr "Bağlantı _Aç"
|
||||
|
||||
#: gtk/gtklabel.c:5716
|
||||
#: gtk/gtklabel.c:5726
|
||||
msgid "Copy _Link Address"
|
||||
msgstr "_Bağlantı Adresini Kopyala"
|
||||
|
||||
#: gtk/gtklabel.c:5760 gtk/gtktext.c:2716 gtk/gtktextview.c:9088
|
||||
#: gtk/gtklabel.c:5770 gtk/gtktext.c:2724 gtk/gtktextview.c:9150
|
||||
msgid "Context menu"
|
||||
msgstr "Bağlamsal menü"
|
||||
|
||||
@@ -3536,7 +3541,7 @@ msgstr "“%s” URI’li öge “%s”e taşınamadı"
|
||||
msgid "No registered application with name “%s” for item with URI “%s” found"
|
||||
msgstr "“%2$s” URIʼli öge için “%1$s” adında kayıtlı uygulama bulunamadı"
|
||||
|
||||
#: gtk/gtksearchentry.c:767
|
||||
#: gtk/gtksearchentry.c:810
|
||||
msgid "Clear Entry"
|
||||
msgstr "Girdiyi Temizle"
|
||||
|
||||
@@ -3627,15 +3632,15 @@ msgctxt "accessibility"
|
||||
msgid "Sidebar"
|
||||
msgstr "Kenar Çubuğu"
|
||||
|
||||
#: gtk/gtktext.c:6161 gtk/gtktextview.c:9044
|
||||
#: gtk/gtktext.c:6207 gtk/gtktextview.c:9106
|
||||
msgid "Insert _Emoji"
|
||||
msgstr "_Emoji Ekle"
|
||||
|
||||
#: gtk/gtktextview.c:9026
|
||||
#: gtk/gtktextview.c:9088
|
||||
msgid "_Undo"
|
||||
msgstr "_Geri Al"
|
||||
|
||||
#: gtk/gtktextview.c:9030
|
||||
#: gtk/gtktextview.c:9092
|
||||
msgid "_Redo"
|
||||
msgstr "_Yinele"
|
||||
|
||||
@@ -7774,6 +7779,7 @@ msgid ""
|
||||
"\n"
|
||||
"Commands:\n"
|
||||
" benchmark Benchmark rendering of a node\n"
|
||||
" compare Compare nodes or images\n"
|
||||
" info Provide information about the node\n"
|
||||
" show Show the node\n"
|
||||
" render Take a screenshot of the node\n"
|
||||
@@ -7782,10 +7788,11 @@ msgstr ""
|
||||
"Kullanım:\n"
|
||||
" gtk4-rendernode-tool [KOMUT] [SEÇENEK…] DOSYA\n"
|
||||
"\n"
|
||||
"GTK gerçekleme düğümleri üzerinde türlü görevler gerçekleştirin.\n"
|
||||
"GTK gerçekleme düğümleri üzerinde türlü görevler gerçekleştir.\n"
|
||||
"\n"
|
||||
"Komutlar:\n"
|
||||
" benchmark Düğümlerin gerçeklemesini kıyasla\n"
|
||||
" compare Düğümleri ya da görüntüleri karşılaştır\n"
|
||||
" info Düğümle ilgili bilgi sağla\n"
|
||||
" show Düğümü göster\n"
|
||||
" render Düğümün ekran görüntüsünü al\n"
|
||||
|
||||
@@ -9,8 +9,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gtk+\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
|
||||
"POT-Creation-Date: 2024-02-12 01:46+0000\n"
|
||||
"PO-Revision-Date: 2024-02-12 22:09+0200\n"
|
||||
"POT-Creation-Date: 2024-02-23 01:06+0000\n"
|
||||
"PO-Revision-Date: 2024-02-23 09:47+0200\n"
|
||||
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
|
||||
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
|
||||
"Language: uk\n"
|
||||
@@ -50,7 +50,7 @@ msgstr "Не вдалося надати дані як «%s»"
|
||||
msgid "Cannot provide contents as %s"
|
||||
msgstr "Не вдалося надати дані як %s"
|
||||
|
||||
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:462
|
||||
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:459
|
||||
msgid "The current backend does not support OpenGL"
|
||||
msgstr "Цей модуль не підтримує OpenGL"
|
||||
|
||||
@@ -118,34 +118,32 @@ msgstr ""
|
||||
msgid "No compatible formats to transfer contents."
|
||||
msgstr "Немає сумісних форматів для передавання даних."
|
||||
|
||||
#: gdk/gdkglcontext.c:422 gdk/x11/gdkglcontext-glx.c:645
|
||||
#: gdk/gdkglcontext.c:419 gdk/x11/gdkglcontext-glx.c:645
|
||||
msgid "No GL API allowed."
|
||||
msgstr "Програмний інтерфейс GL заборонено."
|
||||
|
||||
#: gdk/gdkglcontext.c:445 gdk/win32/gdkglcontext-win32-wgl.c:386
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:529
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:573 gdk/x11/gdkglcontext-glx.c:691
|
||||
#: gdk/gdkglcontext.c:442 gdk/win32/gdkglcontext-win32-wgl.c:395
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:538
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:582 gdk/x11/gdkglcontext-glx.c:691
|
||||
msgid "Unable to create a GL context"
|
||||
msgstr "Неможливо створити вміст GL"
|
||||
|
||||
#: gdk/gdkglcontext.c:1306
|
||||
#| msgid "Anything but OpenGL ES disabled via GDK_DEBUG"
|
||||
#: gdk/gdkglcontext.c:1303
|
||||
msgid "OpenGL ES disabled via GDK_DEBUG"
|
||||
msgstr "За допомогою GDK_DEBUG вимкнено OpenGL ES"
|
||||
|
||||
#: gdk/gdkglcontext.c:1318
|
||||
#| msgid "GL support disabled via GDK_DEBUG"
|
||||
#: gdk/gdkglcontext.c:1315
|
||||
msgid "OpenGL disabled via GDK_DEBUG"
|
||||
msgstr "OpenGL вимкнено за допомогою GDK_DEBUG"
|
||||
|
||||
#: gdk/gdkglcontext.c:1329
|
||||
#: gdk/gdkglcontext.c:1326
|
||||
#, c-format
|
||||
msgid "Application does not support %s API"
|
||||
msgstr "У програмі не передбачено підтримки програмного інтерфейсу %s"
|
||||
|
||||
#. translators: This is about OpenGL backend names, like
|
||||
#. * "Trying to use X11 GLX, but EGL is already in use"
|
||||
#: gdk/gdkglcontext.c:2115
|
||||
#: gdk/gdkglcontext.c:2112
|
||||
#, c-format
|
||||
msgid "Trying to use %s, but %s is already in use"
|
||||
msgstr "Намагаємося скористатися %s, але %s вже використано"
|
||||
@@ -563,7 +561,6 @@ msgstr "Непідтримуваний тип кольору, %u, у зобра
|
||||
|
||||
#: gdk/loaders/gdkpng.c:272
|
||||
#, c-format
|
||||
#| msgid "Not enough memory for image size %ux%u"
|
||||
msgid "Image stride too large for image size %ux%u"
|
||||
msgstr "Зображення поширюється надто далеко для розміру зображення %ux%u"
|
||||
|
||||
@@ -744,21 +741,21 @@ msgstr ""
|
||||
"Не вдалося перетворити формат W32 даних перетягування зі скиданням 0x%x до "
|
||||
"%p (%s)"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:320
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:329
|
||||
msgid "No GL implementation is available"
|
||||
msgstr "Немає жодної реалізації GL"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:395
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:404
|
||||
#, c-format
|
||||
msgid "WGL version %d.%d is too low, need at least %d.%d"
|
||||
msgstr "Версія WGL %d.%d є надто давньою. Потрібна версія принаймні %d.%d"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:413
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:422
|
||||
#, c-format
|
||||
msgid "GL implementation cannot share GL contexts"
|
||||
msgstr "Реалізація GL не може оприлюднювати контексти GL"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:693
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:702
|
||||
msgid "No available configurations for the given pixel format"
|
||||
msgstr "Немає доступних налаштувань для заданого формату точок"
|
||||
|
||||
@@ -1254,7 +1251,6 @@ msgid "Mozilla Public License 2.0"
|
||||
msgstr "Громадська ліцензія Mozilla 2.0"
|
||||
|
||||
#: gtk/gtkaboutdialog.c:137
|
||||
#| msgid "BSD 2-Clause License"
|
||||
msgid "BSD Zero-Clause License"
|
||||
msgstr "Zero-Clause ліцензія BSD"
|
||||
|
||||
@@ -1786,19 +1782,21 @@ msgid "block quote"
|
||||
msgstr "цитата"
|
||||
|
||||
#: gtk/gtkaccessible.c:872
|
||||
#| msgctxt "sizegroup mode"
|
||||
#| msgid "Vertical"
|
||||
msgctxt "accessibility"
|
||||
msgid "article"
|
||||
msgstr "стаття"
|
||||
|
||||
#: gtk/gtkaccessible.c:873
|
||||
#| msgctxt "accessibility"
|
||||
#| msgid "command"
|
||||
msgctxt "accessibility"
|
||||
msgid "comment"
|
||||
msgstr "коментар"
|
||||
|
||||
#: gtk/gtkaccessible.c:874
|
||||
#| msgid "Terminal Pager"
|
||||
msgctxt "accessibility"
|
||||
msgid "terminal"
|
||||
msgstr "термінал"
|
||||
|
||||
#: gtk/gtkalertdialog.c:668 gtk/print/gtkcustompaperunixdialog.c:322
|
||||
#: gtk/gtkmessagedialog.c:166 gtk/ui/gtkassistant.ui:40
|
||||
msgid "_Close"
|
||||
@@ -2372,7 +2370,7 @@ msgid "If you delete an item, it will be permanently lost."
|
||||
msgstr "Якщо вилучити об'єкт, його буде втрачено назавжди."
|
||||
|
||||
#: gtk/gtkfilechooserwidget.c:1188 gtk/gtkfilechooserwidget.c:1786
|
||||
#: gtk/gtklabel.c:5702 gtk/gtktext.c:6147 gtk/gtktextview.c:9018
|
||||
#: gtk/gtklabel.c:5712 gtk/gtktext.c:6193 gtk/gtktextview.c:9080
|
||||
msgid "_Delete"
|
||||
msgstr "В_илучити"
|
||||
|
||||
@@ -2569,7 +2567,6 @@ msgid "Accessed"
|
||||
msgstr "Дозволено"
|
||||
|
||||
#: gtk/gtkfilechooserwidget.c:7361
|
||||
#| msgid "Size"
|
||||
msgid "_Size"
|
||||
msgstr "_Розмір"
|
||||
|
||||
@@ -2578,7 +2575,6 @@ msgid "T_ype"
|
||||
msgstr "Т_ип"
|
||||
|
||||
#: gtk/gtkfilechooserwidget.c:7369
|
||||
#| msgid "Show _Time"
|
||||
msgid "_Time"
|
||||
msgstr "_Час"
|
||||
|
||||
@@ -2712,31 +2708,31 @@ msgstr "Закрити"
|
||||
msgid "Close the infobar"
|
||||
msgstr "Закрити панель відомостей"
|
||||
|
||||
#: gtk/gtklabel.c:5699 gtk/gtktext.c:6135 gtk/gtktextview.c:9006
|
||||
#: gtk/gtklabel.c:5709 gtk/gtktext.c:6181 gtk/gtktextview.c:9068
|
||||
msgid "Cu_t"
|
||||
msgstr "Ви_різати"
|
||||
|
||||
#: gtk/gtklabel.c:5700 gtk/gtktext.c:6139 gtk/gtktextview.c:9010
|
||||
#: gtk/gtklabel.c:5710 gtk/gtktext.c:6185 gtk/gtktextview.c:9072
|
||||
msgid "_Copy"
|
||||
msgstr "_Копіювати"
|
||||
|
||||
#: gtk/gtklabel.c:5701 gtk/gtktext.c:6143 gtk/gtktextview.c:9014
|
||||
#: gtk/gtklabel.c:5711 gtk/gtktext.c:6189 gtk/gtktextview.c:9076
|
||||
msgid "_Paste"
|
||||
msgstr "Вст_авити"
|
||||
|
||||
#: gtk/gtklabel.c:5707 gtk/gtktext.c:6156 gtk/gtktextview.c:9039
|
||||
#: gtk/gtklabel.c:5717 gtk/gtktext.c:6202 gtk/gtktextview.c:9101
|
||||
msgid "Select _All"
|
||||
msgstr "Виді_лити все"
|
||||
|
||||
#: gtk/gtklabel.c:5712
|
||||
#: gtk/gtklabel.c:5722
|
||||
msgid "_Open Link"
|
||||
msgstr "_Відкрити посилання"
|
||||
|
||||
#: gtk/gtklabel.c:5716
|
||||
#: gtk/gtklabel.c:5726
|
||||
msgid "Copy _Link Address"
|
||||
msgstr "Копіювати _адресу посилання"
|
||||
|
||||
#: gtk/gtklabel.c:5760 gtk/gtktext.c:2716 gtk/gtktextview.c:9088
|
||||
#: gtk/gtklabel.c:5770 gtk/gtktext.c:2724 gtk/gtktextview.c:9150
|
||||
msgid "Context menu"
|
||||
msgstr "Контекстне меню"
|
||||
|
||||
@@ -3585,7 +3581,7 @@ msgid "No registered application with name “%s” for item with URI “%s” f
|
||||
msgstr ""
|
||||
"Не знайдено зареєстрованої програми з назвою «%s» для пункту з URI «%s»"
|
||||
|
||||
#: gtk/gtksearchentry.c:767
|
||||
#: gtk/gtksearchentry.c:810
|
||||
msgid "Clear Entry"
|
||||
msgstr "Спорожнити запис"
|
||||
|
||||
@@ -3676,15 +3672,15 @@ msgctxt "accessibility"
|
||||
msgid "Sidebar"
|
||||
msgstr "Бічна панель"
|
||||
|
||||
#: gtk/gtktext.c:6161 gtk/gtktextview.c:9044
|
||||
#: gtk/gtktext.c:6207 gtk/gtktextview.c:9106
|
||||
msgid "Insert _Emoji"
|
||||
msgstr "Вставити _емодзі"
|
||||
|
||||
#: gtk/gtktextview.c:9026
|
||||
#: gtk/gtktextview.c:9088
|
||||
msgid "_Undo"
|
||||
msgstr "_Скасувати"
|
||||
|
||||
#: gtk/gtktextview.c:9030
|
||||
#: gtk/gtktextview.c:9092
|
||||
msgid "_Redo"
|
||||
msgstr "Пов_торити"
|
||||
|
||||
@@ -3881,38 +3877,37 @@ msgstr "Класи стилів"
|
||||
msgid "CSS Property"
|
||||
msgstr "Властивість CSS"
|
||||
|
||||
#: gtk/inspector/general.c:363
|
||||
#: gtk/inspector/general.c:370
|
||||
msgctxt "GL version"
|
||||
msgid "None"
|
||||
msgstr "Немає"
|
||||
|
||||
#: gtk/inspector/general.c:441
|
||||
#| msgid "Unknown"
|
||||
#: gtk/inspector/general.c:461
|
||||
msgctxt "GL version"
|
||||
msgid "Unknown"
|
||||
msgstr "Невідомо"
|
||||
|
||||
#: gtk/inspector/general.c:503
|
||||
#: gtk/inspector/general.c:523
|
||||
msgctxt "Vulkan device"
|
||||
msgid "Disabled"
|
||||
msgstr "Вимкнено"
|
||||
|
||||
#: gtk/inspector/general.c:504 gtk/inspector/general.c:505
|
||||
#: gtk/inspector/general.c:524 gtk/inspector/general.c:525
|
||||
msgctxt "Vulkan version"
|
||||
msgid "Disabled"
|
||||
msgstr "Вимкнено"
|
||||
|
||||
#: gtk/inspector/general.c:555
|
||||
#: gtk/inspector/general.c:576
|
||||
msgctxt "Vulkan device"
|
||||
msgid "None"
|
||||
msgstr "Немає"
|
||||
|
||||
#: gtk/inspector/general.c:556 gtk/inspector/general.c:557
|
||||
#: gtk/inspector/general.c:577 gtk/inspector/general.c:578
|
||||
msgctxt "Vulkan version"
|
||||
msgid "None"
|
||||
msgstr "Немає"
|
||||
|
||||
#: gtk/inspector/general.c:901
|
||||
#: gtk/inspector/general.c:922
|
||||
msgid "IM Context is hardcoded by GTK_IM_MODULE"
|
||||
msgstr "Контекст способу введення жорстко встановлено у GTK_IM_MODULE"
|
||||
|
||||
@@ -3965,7 +3960,6 @@ msgid "Composited"
|
||||
msgstr "Складений"
|
||||
|
||||
#: gtk/inspector/general.ui:538
|
||||
#| msgid "Available Protocols"
|
||||
msgid "Protocols"
|
||||
msgstr "Протоколи"
|
||||
|
||||
@@ -3974,12 +3968,10 @@ msgid "GL Version"
|
||||
msgstr "Версія GL"
|
||||
|
||||
#: gtk/inspector/general.ui:621
|
||||
#| msgid "GL Version"
|
||||
msgid "GL Backend Version"
|
||||
msgstr "Версія модуля GL"
|
||||
|
||||
#: gtk/inspector/general.ui:671
|
||||
#| msgid "GL Vendor"
|
||||
msgid "GL Backend Vendor"
|
||||
msgstr "Постачальник модуля GL"
|
||||
|
||||
@@ -3988,7 +3980,6 @@ msgid "GL_VENDOR"
|
||||
msgstr "GL_VENDOR"
|
||||
|
||||
#: gtk/inspector/general.ui:727
|
||||
#| msgid "RENDERER"
|
||||
msgid "GL_RENDERER"
|
||||
msgstr "GL_RENDERER"
|
||||
|
||||
@@ -4433,11 +4424,10 @@ msgid ""
|
||||
"Tints all the places where the current renderer uses Cairo instead of the "
|
||||
"GPU."
|
||||
msgstr ""
|
||||
"Підсвітити усі місця, де поточний засіб обробки використовує Cairo замість"
|
||||
" графічного процесора."
|
||||
"Підсвітити усі місця, де поточний засіб обробки використовує Cairo замість "
|
||||
"графічного процесора."
|
||||
|
||||
#: gtk/inspector/visual.ui:436
|
||||
#| msgid "Show Fallback Rendering"
|
||||
msgid "Show Cairo Rendering"
|
||||
msgstr "Показати обробку Cairo"
|
||||
|
||||
@@ -4474,7 +4464,6 @@ msgid "Show Accessibility warnings"
|
||||
msgstr "Показати попередження щодо доступності"
|
||||
|
||||
#: gtk/inspector/visual.ui:661
|
||||
#| msgid "Show Graphic Updates"
|
||||
msgid "Show Graphics Offload"
|
||||
msgstr "Показувати графічне вивантаження"
|
||||
|
||||
@@ -7515,18 +7504,6 @@ msgstr "%s: помилка запускання програми: %s\n"
|
||||
|
||||
#: tools/gtk-path-tool.c:35
|
||||
#, c-format
|
||||
#| msgid ""
|
||||
#| "Usage:\n"
|
||||
#| " gtk4-path-tool [COMMAND] [OPTION…] PATH\n"
|
||||
#| "\n"
|
||||
#| "Perform various tasks on paths.\n"
|
||||
#| "\n"
|
||||
#| "Commands:\n"
|
||||
#| " decompose Decompose the path\n"
|
||||
#| " show Display the path in a window\n"
|
||||
#| " render Render the path as an image\n"
|
||||
#| " info Print information about the path\n"
|
||||
#| "\n"
|
||||
msgid ""
|
||||
"Usage:\n"
|
||||
" gtk4-path-tool [COMMAND] [OPTION…] PATH\n"
|
||||
@@ -7565,7 +7542,6 @@ msgid "Allow cubic Bézier curves"
|
||||
msgstr "Дозволити кубічні криві Безьє"
|
||||
|
||||
#: tools/gtk-path-tool-decompose.c:86
|
||||
#| msgid "Allow cubic Bézier curves"
|
||||
msgid "Allow conic Bézier curves"
|
||||
msgstr "Дозволити конічні криві Безьє"
|
||||
|
||||
@@ -7632,7 +7608,6 @@ msgstr "%d кубічних апроксимацій"
|
||||
|
||||
#: tools/gtk-path-tool-info.c:159
|
||||
#, c-format
|
||||
#| msgid "%d cubics"
|
||||
msgid "%d conics"
|
||||
msgstr "%d конічних перерізів"
|
||||
|
||||
@@ -7645,12 +7620,10 @@ msgid "Stroke the path"
|
||||
msgstr "Заштрихувати контур"
|
||||
|
||||
#: tools/gtk-path-tool-render.c:119 tools/gtk-path-tool-show.c:142
|
||||
#| msgid "Show other locations"
|
||||
msgid "Show path points"
|
||||
msgstr "Показати точки контура"
|
||||
|
||||
#: tools/gtk-path-tool-render.c:120 tools/gtk-path-tool-show.c:143
|
||||
#| msgid "Show other locations"
|
||||
msgid "Show control points"
|
||||
msgstr "Показати контрольні точки"
|
||||
|
||||
@@ -7673,7 +7646,6 @@ msgid "Background color"
|
||||
msgstr "Колір тла"
|
||||
|
||||
#: tools/gtk-path-tool-render.c:124 tools/gtk-path-tool-show.c:146
|
||||
#| msgid "Pick a Color"
|
||||
msgid "Point color"
|
||||
msgstr "Колір точки"
|
||||
|
||||
@@ -7730,7 +7702,6 @@ msgid "Options related to filling"
|
||||
msgstr "Параметри, які пов'язано із заповненням"
|
||||
|
||||
#: tools/gtk-path-tool-render.c:174 tools/gtk-path-tool-show.c:184
|
||||
#| msgid "Show other locations"
|
||||
msgid "Show help for fill options"
|
||||
msgstr "Показати довідку щодо варіантів заповнення"
|
||||
|
||||
@@ -7739,7 +7710,6 @@ msgid "Options related to stroking"
|
||||
msgstr "Параметри, які пов'язано зі штрихуванням"
|
||||
|
||||
#: tools/gtk-path-tool-render.c:182 tools/gtk-path-tool-show.c:192
|
||||
#| msgid "Show other locations"
|
||||
msgid "Show help for stroke options"
|
||||
msgstr "Показати довідку щодо варіантів штрихування"
|
||||
|
||||
@@ -7786,12 +7756,10 @@ msgid "End of segment"
|
||||
msgstr "Кінець сегмента"
|
||||
|
||||
#: tools/gtk-path-tool-restrict.c:51
|
||||
#| msgid "Render the path to a png image."
|
||||
msgid "Restrict a path to a segment."
|
||||
msgstr "Обмежити контур до сегмента."
|
||||
|
||||
#: tools/gtk-path-tool-reverse.c:45
|
||||
#| msgid "Reverse portrait"
|
||||
msgid "Reverse a path."
|
||||
msgstr "Обернути контур."
|
||||
|
||||
@@ -7843,17 +7811,6 @@ msgstr "Не вдалося обробити «%s» як число"
|
||||
|
||||
#: tools/gtk-rendernode-tool.c:35
|
||||
#, c-format
|
||||
#| msgid ""
|
||||
#| "Usage:\n"
|
||||
#| " gtk4-rendernode-tool [COMMAND] [OPTION…] FILE\n"
|
||||
#| "\n"
|
||||
#| "Perform various tasks on GTK render nodes.\n"
|
||||
#| "\n"
|
||||
#| "Commands:\n"
|
||||
#| " info Provide information about the node\n"
|
||||
#| " show Show the node\n"
|
||||
#| " render Take a screenshot of the node\n"
|
||||
#| "\n"
|
||||
msgid ""
|
||||
"Usage:\n"
|
||||
" gtk4-rendernode-tool [COMMAND] [OPTION…] FILE\n"
|
||||
@@ -7862,6 +7819,7 @@ msgid ""
|
||||
"\n"
|
||||
"Commands:\n"
|
||||
" benchmark Benchmark rendering of a node\n"
|
||||
" compare Compare nodes or images\n"
|
||||
" info Provide information about the node\n"
|
||||
" show Show the node\n"
|
||||
" render Take a screenshot of the node\n"
|
||||
@@ -7874,13 +7832,13 @@ msgstr ""
|
||||
"\n"
|
||||
"Команди:\n"
|
||||
" benchmark Тестувати обробку вузла\n"
|
||||
" compare Порівняти вузли або зображення\n"
|
||||
" info Надати дані щодо вузла\n"
|
||||
" show Показати вузол\n"
|
||||
" render Створити знімок вікна вузла\n"
|
||||
"\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-benchmark.c:94
|
||||
#| msgid "Renderer to use"
|
||||
msgid "Add renderer to benchmark"
|
||||
msgstr "Додати обробник до тестування"
|
||||
|
||||
@@ -7915,7 +7873,6 @@ msgstr "Не вказано файл .node\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-benchmark.c:133
|
||||
#, c-format
|
||||
#| msgid "Can only accept a single .node file\n"
|
||||
msgid "Can only benchmark a single .node file\n"
|
||||
msgstr "Можлива одночасне тестування лише за допомогою одного файла .node\n"
|
||||
|
||||
@@ -7964,7 +7921,6 @@ msgstr "Не вдалося створити SVG: %s\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-render.c:150
|
||||
#, c-format
|
||||
#| msgid "Failed to rewrite header\n"
|
||||
msgid "Failed to create renderer: %s\n"
|
||||
msgstr "Не вдалося створити засіб обробки: %s\n"
|
||||
|
||||
@@ -8003,7 +7959,6 @@ msgstr "Помилка у %s: %s\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-utils.c:72
|
||||
#, c-format
|
||||
#| msgid "Failed to open file %s : %s\n"
|
||||
msgid "Failed to load node file: %s\n"
|
||||
msgstr "Не вдалося завантажити файл вузла: %s\n"
|
||||
|
||||
|
||||
@@ -0,0 +1,147 @@
|
||||
/* Copyright 2024 Red Hat, Inc.
|
||||
*
|
||||
* GTK is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* GTK 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with GTK; see the file COPYING. If not,
|
||||
* see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author: Matthias Clasen
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include <glib/gi18n-lib.h>
|
||||
#include <glib/gprintf.h>
|
||||
#include <glib/gstdio.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include "gtk-rendernode-tool.h"
|
||||
|
||||
#include "testsuite/reftests/reftest-compare.h"
|
||||
|
||||
static GdkTexture *
|
||||
texture_from_file (const char *filename,
|
||||
GskRenderer *renderer,
|
||||
GError **error)
|
||||
{
|
||||
GdkTexture *texture;
|
||||
|
||||
if (g_str_has_suffix (filename, ".node"))
|
||||
{
|
||||
GskRenderNode *node = load_node_file (filename);
|
||||
texture = gsk_renderer_render_texture (renderer, node, NULL);
|
||||
gsk_render_node_unref (node);
|
||||
}
|
||||
else
|
||||
{
|
||||
texture = gdk_texture_new_from_filename (filename, error);
|
||||
}
|
||||
|
||||
return texture;
|
||||
}
|
||||
|
||||
void
|
||||
do_compare (int *argc,
|
||||
const char ***argv)
|
||||
{
|
||||
GOptionContext *context;
|
||||
char *opt_filename = NULL;
|
||||
gboolean opt_quiet = FALSE;
|
||||
char **filenames = NULL;
|
||||
char *renderer_name = NULL;
|
||||
const GOptionEntry entries[] = {
|
||||
{ "renderer", 0, 0, G_OPTION_ARG_STRING, &renderer_name, N_("Renderer to use"), N_("RENDERER") },
|
||||
|
||||
{ "output", 'o', 0, G_OPTION_ARG_FILENAME, &opt_filename, N_("Output file"), N_("FILE") },
|
||||
{ "quiet", 'q', 0, G_OPTION_ARG_NONE, &opt_quiet, "Don't talk", NULL },
|
||||
|
||||
{ G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &filenames, NULL, N_("FILE1 FILE2") },
|
||||
{ NULL, }
|
||||
};
|
||||
GskRenderer *renderer;
|
||||
GdkTexture *texture[2];
|
||||
GdkTexture *diff;
|
||||
GError *error = NULL;
|
||||
|
||||
g_set_prgname ("gtk4-rendernode-tool compare");
|
||||
context = g_option_context_new (NULL);
|
||||
g_option_context_set_translation_domain (context, GETTEXT_PACKAGE);
|
||||
g_option_context_add_main_entries (context, entries, NULL);
|
||||
g_option_context_set_summary (context, _("Compare .node or .png files."));
|
||||
|
||||
if (!g_option_context_parse (context, argc, (char ***)argv, &error))
|
||||
{
|
||||
g_printerr ("%s\n", error->message);
|
||||
g_error_free (error);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
g_option_context_free (context);
|
||||
|
||||
if (filenames == NULL || g_strv_length (filenames) != 2)
|
||||
{
|
||||
g_printerr (_("Must specify two files\n"));
|
||||
exit (1);
|
||||
}
|
||||
|
||||
renderer = create_renderer (renderer_name, &error);
|
||||
if (renderer == NULL)
|
||||
{
|
||||
g_printerr (_("Failed to create renderer: %s\n"), error->message);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
texture[i] = texture_from_file (filenames[i], renderer, &error);
|
||||
if (texture[i] == NULL)
|
||||
{
|
||||
g_printerr (_("Failed to load %s: %s\n"), filenames[i], error->message);
|
||||
exit (1);
|
||||
}
|
||||
}
|
||||
|
||||
diff = reftest_compare_textures (texture[0], texture[1]);
|
||||
|
||||
if (opt_filename && diff)
|
||||
{
|
||||
if (!gdk_texture_save_to_png (diff, opt_filename))
|
||||
{
|
||||
g_printerr (_("Could not save diff image to %s\n"), opt_filename);
|
||||
exit (1);
|
||||
}
|
||||
}
|
||||
|
||||
if (!opt_quiet)
|
||||
{
|
||||
if (diff)
|
||||
{
|
||||
if (opt_filename)
|
||||
g_print (_("Differences witten to %s.\n"), opt_filename);
|
||||
else
|
||||
g_print (_("The images are different.\n"));
|
||||
}
|
||||
else
|
||||
g_print (_("No differences.\n"));
|
||||
}
|
||||
|
||||
if (diff)
|
||||
exit (1);
|
||||
|
||||
g_strfreev (filenames);
|
||||
g_object_unref (texture[0]);
|
||||
g_object_unref (texture[1]);
|
||||
g_object_unref (renderer);
|
||||
}
|
||||
@@ -39,6 +39,7 @@ usage (void)
|
||||
"\n"
|
||||
"Commands:\n"
|
||||
" benchmark Benchmark rendering of a node\n"
|
||||
" compare Compare nodes or images\n"
|
||||
" info Provide information about the node\n"
|
||||
" show Show the node\n"
|
||||
" render Take a screenshot of the node\n"
|
||||
@@ -116,6 +117,8 @@ main (int argc, const char *argv[])
|
||||
do_info (&argc, &argv);
|
||||
else if (strcmp (argv[0], "benchmark") == 0)
|
||||
do_benchmark (&argc, &argv);
|
||||
else if (strcmp (argv[0], "compare") == 0)
|
||||
do_compare (&argc, &argv);
|
||||
else
|
||||
usage ();
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#pragma once
|
||||
|
||||
void do_benchmark (int *argc, const char ***argv);
|
||||
void do_compare (int *argc, const char ***argv);
|
||||
void do_info (int *argc, const char ***argv);
|
||||
void do_show (int *argc, const char ***argv);
|
||||
void do_render (int *argc, const char ***argv);
|
||||
|
||||
+3
-1
@@ -42,10 +42,12 @@ gtk_tools = [
|
||||
'fake-scope.c'], [libgtk_dep] ],
|
||||
['gtk4-rendernode-tool', ['gtk-rendernode-tool.c',
|
||||
'gtk-rendernode-tool-benchmark.c',
|
||||
'gtk-rendernode-tool-compare.c',
|
||||
'gtk-rendernode-tool-info.c',
|
||||
'gtk-rendernode-tool-render.c',
|
||||
'gtk-rendernode-tool-show.c',
|
||||
'gtk-rendernode-tool-utils.c'], [libgtk_dep] ],
|
||||
'gtk-rendernode-tool-utils.c',
|
||||
'../testsuite/reftests/reftest-compare.c'], [libgtk_dep] ],
|
||||
['gtk4-update-icon-cache', ['updateiconcache.c', '../gtk/gtkiconcachevalidator.c' ] + extra_update_icon_cache_objs, [ libgtk_dep ] ],
|
||||
['gtk4-encode-symbolic-svg', ['encodesymbolic.c'], [ libgtk_static_dep ] ],
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user