This repository has been archived on 2021-09-15. You can view files and clone it, but cannot push or open issues or pull requests.
DUT2Curling/lib/ruby-gtk2-2.0.2/gdk_pixbuf2/ext/gdk_pixbuf2/rbgdk-pixbuf-format.c

180 lines
4.6 KiB
C

/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
/*
* Copyright (C) 2011 Ruby-GNOME2 Project Team
* Copyright (C) 2004 Masao Mutoh
*
* This library 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.1 of the License, or (at your option) any later version.
*
* This library 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 this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
#include "rbgdk-pixbuf2private.h"
#if RBGDK_PIXBUF_CHECK_VERSION(2,2,0)
#ifdef HAVE_GDK_PIXBUF_GDK_PIXBUF_IO_H
#include <gdk-pixbuf/gdk-pixbuf-io.h>
#endif
#define RG_TARGET_NAMESPACE cPixbufFormat
#define _SELF(r) (RVAL2GDKPIXBUFFORMAT(r))
/**********************************/
static GdkPixbufFormat*
format_copy(const GdkPixbufFormat* val)
{
GdkPixbufFormat* new_val;
g_return_val_if_fail (val != NULL, NULL);
new_val = g_new(GdkPixbufFormat, 1);
*new_val = *val;
return new_val;
}
GType
gdk_pixbuf_format_get_type(void)
{
static GType our_type = 0;
if (our_type == 0)
our_type = g_boxed_type_register_static ("GdkPixbufFormat",
(GBoxedCopyFunc)format_copy,
(GBoxedFreeFunc)g_free);
return our_type;
}
/**********************************/
/* Move to rbgdk-pixbuf.c
gboolean gdk_pixbuf_set_option (GdkPixbuf *pixbuf,
const gchar *key,
const gchar *value);
GSList* gdk_pixbuf_get_formats (void);
*/
static VALUE
rg_name(VALUE self)
{
return CSTR2RVAL_FREE(gdk_pixbuf_format_get_name(_SELF(self)));
}
static VALUE
rg_description(VALUE self)
{
return CSTR2RVAL_FREE(gdk_pixbuf_format_get_description(_SELF(self)));
}
static VALUE
rg_mime_types(VALUE self)
{
gint i = 0;
gchar** mime_types = gdk_pixbuf_format_get_mime_types(_SELF(self));
VALUE array = rb_ary_new();
while(mime_types[i]){
rb_ary_push(array, CSTR2RVAL(mime_types[i]));
i++;
}
g_strfreev(mime_types);
return array;
}
static VALUE
rg_extensions(VALUE self)
{
gint i = 0;
gchar** extensions = gdk_pixbuf_format_get_extensions(_SELF(self));
VALUE array = rb_ary_new();
while(extensions[i]){
rb_ary_push(array, CSTR2RVAL(extensions[i]));
i++;
}
g_strfreev(extensions);
return array;
}
static VALUE
rg_writable_p(VALUE self)
{
return CBOOL2RVAL(gdk_pixbuf_format_is_writable(_SELF(self)));
}
/* Structure */
static VALUE
rg_domain(VALUE self)
{
return CSTR2RVAL(_SELF(self)->domain);
}
static VALUE
rg_signature(VALUE self)
{
GdkPixbufModulePattern* signature = _SELF(self)->signature;
VALUE array = rb_ary_new();
int i = 0;
while(signature[i].prefix){
rb_ary_push(array, rb_ary_new3(3, CSTR2RVAL((const char*)signature[i].prefix),
CSTR2RVAL((const char*)signature[i].mask),
INT2NUM(signature[i].relevance)));
i++;
}
return array;
}
#endif
#if RBGDK_PIXBUF_CHECK_VERSION(2,6,0)
static VALUE
rg_scalable_p(VALUE self)
{
return CBOOL2RVAL(gdk_pixbuf_format_is_scalable(_SELF(self)));
}
static VALUE
rg_disabled_p(VALUE self)
{
return CBOOL2RVAL(gdk_pixbuf_format_is_disabled(_SELF(self)));
}
static VALUE
rg_set_disabled(VALUE self, VALUE disabled)
{
gdk_pixbuf_format_set_disabled(_SELF(self), RVAL2CBOOL(disabled));
return self;
}
static VALUE
rg_license(VALUE self)
{
return CSTR2RVAL(gdk_pixbuf_format_get_license(_SELF(self)));
}
#endif
void
Init_gdk_pixbuf_format(VALUE mGdk)
{
#if RBGDK_PIXBUF_CHECK_VERSION(2,2,0)
VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(GDK_TYPE_PIXBUF_FORMAT, "PixbufFormat", mGdk);
RG_DEF_METHOD(name, 0);
RG_DEF_METHOD(description, 0);
RG_DEF_METHOD(mime_types, 0);
RG_DEF_METHOD(extensions, 0);
RG_DEF_METHOD_P(writable, 0);
RG_DEF_METHOD(domain, 0);
RG_DEF_METHOD(signature, 0);
#if RBGDK_PIXBUF_CHECK_VERSION(2,6,0)
RG_DEF_METHOD_P(scalable, 0);
RG_DEF_METHOD_P(disabled, 0);
RG_DEF_METHOD(set_disabled, 1);
RG_DEF_METHOD(license, 0);
#endif
#endif
}