/* LIBPIKA - The PIKA Library * Copyright (C) 1995-2000 Peter Mattis and Spencer Kimball * * pikadisplay.c * Copyright (C) Jehan * * 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 3 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, see * . */ #include "config.h" #include "pika.h" #include "libpikabase/pikawire.h" /* FIXME kill this include */ #include "pikaplugin-private.h" #include "pikaprocedure-private.h" enum { PROP_0, PROP_ID, N_PROPS }; struct _PikaDisplayPrivate { gint id; }; static void pika_display_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); static void pika_display_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); G_DEFINE_TYPE_WITH_PRIVATE (PikaDisplay, pika_display, G_TYPE_OBJECT) #define parent_class pika_display_parent_class static GParamSpec *props[N_PROPS] = { NULL, }; static void pika_display_class_init (PikaDisplayClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = pika_display_set_property; object_class->get_property = pika_display_get_property; props[PROP_ID] = g_param_spec_int ("id", "The display id", "The display id for internal use", 0, G_MAXINT32, 0, PIKA_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); g_object_class_install_properties (object_class, N_PROPS, props); } static void pika_display_init (PikaDisplay *display) { display->priv = pika_display_get_instance_private (display); } static void pika_display_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { PikaDisplay *display = PIKA_DISPLAY (object); switch (property_id) { case PROP_ID: display->priv->id = g_value_get_int (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void pika_display_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { PikaDisplay *display = PIKA_DISPLAY (object); switch (property_id) { case PROP_ID: g_value_set_int (value, display->priv->id); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } /* Public API */ /** * pika_display_get_id: * @display: The display. * * Returns: the display ID. * * Since: 3.0 **/ gint32 pika_display_get_id (PikaDisplay *display) { return display ? display->priv->id : -1; } /** * pika_display_get_by_id: * @display_id: The display id. * * Returns a #PikaDisplay representing @display_id. * * Returns: (nullable) (transfer none): a #PikaDisplay for @display_id or * %NULL if @display_id does not represent a valid display. * The object belongs to libpika and you must not modify or * unref it. * * Since: 3.0 **/ PikaDisplay * pika_display_get_by_id (gint32 display_id) { if (display_id > 0) { PikaPlugIn *plug_in = pika_get_plug_in (); PikaProcedure *procedure = _pika_plug_in_get_procedure (plug_in); return _pika_procedure_get_display (procedure, display_id); } return NULL; } /** * pika_display_is_valid: * @display: The display to check. * * Returns TRUE if the display is valid. * * This procedure checks if the given display is valid and refers to * an existing display. * * Returns: Whether the display is valid. * * Since: 2.4 **/ gboolean pika_display_is_valid (PikaDisplay *display) { return pika_display_id_is_valid (pika_display_get_id (display)); }