/* Copyright 2023 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"
static void G_GNUC_NORETURN
usage (void )
{
g_print (_("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"
" compare Compare nodes or images\n"
" convert Convert into nodes\n"
" extract Extract data urls\n"
" info Provide information about the node\n"
" match Match pattern in the node\n"
" show Show the node\n"
" render Take a screenshot of the node\n"
"\n" ));
exit (0 );
}
static GLogWriterOutput
log_writer_func (GLogLevelFlags level,
const GLogField *fields,
gsize n_fields,
gpointer user_data)
{
gsize i;
const char *domain = NULL;
const char *message = NULL;
for (i = 0 ; i < n_fields; i++)
{
if (g_strcmp0 (fields[i].key, "GLIB_DOMAIN" ) == 0 )
domain = fields[i].value;
else if (g_strcmp0 (fields[i].key, "MESSAGE" ) == 0 )
message = fields[i].value;
}
if (message != NULL && !g_log_writer_default_would_drop (level, domain))
{
const char *prefix;
switch (level & G_LOG_LEVEL_MASK)
{
case G_LOG_LEVEL_ERROR:
prefix = "ERROR" ;
break ;
case G_LOG_LEVEL_CRITICAL:
prefix = "CRITICAL" ;
break ;
case G_LOG_LEVEL_WARNING:
prefix = "WARNING" ;
break ;
default :
prefix = "INFO" ;
break ;
}
g_printerr ("%s-%s: %s\n" , domain, prefix, message);
}
return G_LOG_WRITER_HANDLED;
}
int
main (int argc, const char *argv[])
{
g_set_prgname ("gtk-rendernode-tool" );
g_log_set_writer_func (log_writer_func, NULL, NULL);
gtk_init_check ();
if (argc < 2 )
usage ();
if (strcmp (argv[1 ], "--help" ) == 0 )
usage ();
argv++;
argc--;
if (strcmp (argv[0 ], "show" ) == 0 )
do_show (&argc, &argv);
else if (strcmp (argv[0 ], "render" ) == 0 )
do_render (&argc, &argv);
else if (strcmp (argv[0 ], "info" ) == 0 )
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 if (strcmp (argv[0 ], "extract" ) == 0 )
do_extract (&argc, &argv);
else if (strcmp (argv[0 ], "convert" ) == 0 )
do_convert (&argc, &argv);
else if (strcmp (argv[0 ], "filter" ) == 0 )
do_filter (&argc, &argv);
else if (strcmp (argv[0 ], "match" ) == 0 )
do_match (&argc, &argv);
else
usage ();
return 0 ;
}
Messung V0.5 in Prozent C=99 H=94 G=96
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-07-02)
¤
*© Formatika GbR, Deutschland