GdkColormap*
gdk_colormap_new (GdkVisual *visual,
                  gboolean   private_cmap)
{
  GdkColormap *colormap;
  gint         i;

  g_return_val_if_fail (visual != NULL, NULL);

  colormap = g_object_new (gdk_colormap_get_type (), NULL);
  colormap->visual = visual;
  colormap->size   = visual->colormap_size;

  switch (visual->type)
    {
    case GDK_VISUAL_PSEUDO_COLOR:
      {
        GdkColormapPrivateDirectFB *private;
        DFBPaletteDescription       dsc;

        colormap->colors = g_new0 (GdkColor, colormap->size);

        private = g_new0 (GdkColormapPrivateDirectFB, 1);
        private->info = g_new0 (GdkColorInfo, colormap->size);

	if (visual == gdk_visual_get_system())
	  {
            /* save the first (transparent) palette entry */
            private->info[0].ref_count++;
          }
Exemple #2
0
GdkColormap*
gdk_colormap_new (GdkVisual *visual,
                  gboolean   private_cmap)
{
  GdkColormap *colormap;
  gint         i;

  g_return_val_if_fail (visual != NULL, NULL);

  colormap = g_object_new (gdk_colormap_get_type (), NULL);
  colormap->visual = visual;
  colormap->size   = visual->colormap_size;

  switch (visual->type)
    {
    case GDK_VISUAL_PSEUDO_COLOR:
      {
        IDirectFB                  *dfb = _gdk_display->directfb;
        IDirectFBPalette           *palette;
        GdkColormapPrivateDirectFB *private;
        DFBPaletteDescription       dsc;

        dsc.flags = DPDESC_SIZE;
        dsc.size  = colormap->size;
        if (!dfb->CreatePalette (dfb, &dsc, &palette))
          return NULL;

        colormap->colors = g_new0 (GdkColor, colormap->size);

        private = g_new0 (GdkColormapPrivateDirectFB, 1);
        private->info = g_new0 (GdkColorInfo, colormap->size);

	if (visual == gdk_visual_get_system())
	  {
            /* save the first (transparent) palette entry */
            private->info[0].ref_count++;
          }