Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  gdkswizzleprivate.h

  Sprache: C
 

#pragma once

#include "gdkdxgiformatprivate.h"
#include "gdktypes.h"

/* epoxy needs this, see https://github.com/anholt/libepoxy/issues/299 */
#ifdef GDK_WINDOWING_WIN32
#include <windows.h>
#endif

#include <epoxy/gl.h>

#ifdef GDK_RENDERING_VULKAN
#include <vulkan/vulkan.h>
#endif

typedef enum {
  GDK_SWIZZLE_R,
  GDK_SWIZZLE_G,
  GDK_SWIZZLE_B,
  GDK_SWIZZLE_A,
  GDK_SWIZZLE_1,
  GDK_SWIZZLE_0
} GdkSwizzleComponent;

typedef guint32 GdkSwizzle;

#define GDK_SWIZZLE(r,g,b,a) \
  ((GDK_SWIZZLE_ ## r <<  0) | \
  (GDK_SWIZZLE_ ## g <<  8) | \
  (GDK_SWIZZLE_ ## b << 16) | \
  (GDK_SWIZZLE_ ## a << 24))

#define GDK_SWIZZLE_IDENTITY GDK_SWIZZLE (R, G, B, A)
#define GDK_SWIZZLE_OPAQUE GDK_SWIZZLE (R, G, B, 1)

static inline gboolean
gdk_swizzle_is_identity (GdkSwizzle swizzle)
{
  return swizzle == GDK_SWIZZLE_IDENTITY;
}

static inline gboolean
gdk_swizzle_is_framebuffer_compatible (GdkSwizzle swizzle)
{
  return swizzle == GDK_SWIZZLE_IDENTITY ||
         swizzle == GDK_SWIZZLE_OPAQUE;
}
static inline GdkSwizzleComponent
gdk_swizzle_get_component (GdkSwizzle swizzle,
                           gsize      nth)
{
  return (swizzle >> 8 * nth) & 0xFF;
}

static inline D3D12_SHADER_COMPONENT_MAPPING
gdk_swizzle_component_to_d3d12 (GdkSwizzle swizzle)
{
  switch (swizzle)
    {
      case GDK_SWIZZLE_R:
        return D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0;
      case GDK_SWIZZLE_G:
        return D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1;
      case GDK_SWIZZLE_B:
        return D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2;
      case GDK_SWIZZLE_A:
        return D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3;
      case GDK_SWIZZLE_1:
        return D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1;
      case GDK_SWIZZLE_0:
        return D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0;
      default:
        g_assert_not_reached ();
        return D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0;
    }
}

static inline guint
gdk_swizzle_to_d3d12 (GdkSwizzle swizzle)
{
  return D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING (
            gdk_swizzle_component_to_d3d12 (gdk_swizzle_get_component (swizzle, 0)),
            gdk_swizzle_component_to_d3d12 (gdk_swizzle_get_component (swizzle, 1)),
            gdk_swizzle_component_to_d3d12 (gdk_swizzle_get_component (swizzle, 2)),
            gdk_swizzle_component_to_d3d12 (gdk_swizzle_get_component (swizzle, 3)));
}

#ifdef GDK_RENDERING_VULKAN
static inline VkComponentSwizzle
gdk_swizzle_component_to_vk_component_swizzle (GdkSwizzleComponent swizzle)
{
  switch (swizzle)
    {
      case GDK_SWIZZLE_R:
        return VK_COMPONENT_SWIZZLE_R;
      case GDK_SWIZZLE_G:
        return VK_COMPONENT_SWIZZLE_G;
      case GDK_SWIZZLE_B:
        return VK_COMPONENT_SWIZZLE_B;
      case GDK_SWIZZLE_A:
        return VK_COMPONENT_SWIZZLE_A;
      case GDK_SWIZZLE_1:
        return VK_COMPONENT_SWIZZLE_ONE;
      case GDK_SWIZZLE_0:
        return VK_COMPONENT_SWIZZLE_ZERO;
      default:
        g_assert_not_reached ();
        return VK_COMPONENT_SWIZZLE_IDENTITY;
    }
}

static inline void
gdk_swizzle_to_vk_component_mapping (GdkSwizzle          swizzle,
                                     VkComponentMapping *out_mapping)
{
  out_mapping->r = gdk_swizzle_component_to_vk_component_swizzle (gdk_swizzle_get_component (swizzle, 0));
  out_mapping->g = gdk_swizzle_component_to_vk_component_swizzle (gdk_swizzle_get_component (swizzle, 1));
  out_mapping->b = gdk_swizzle_component_to_vk_component_swizzle (gdk_swizzle_get_component (swizzle, 2));
  out_mapping->a = gdk_swizzle_component_to_vk_component_swizzle (gdk_swizzle_get_component (swizzle, 3));
}
#endif

static inline GLint
gdk_swizzle_component_to_gl (GdkSwizzleComponent swizzle)
{
  switch (swizzle)
    {
      case GDK_SWIZZLE_R:
        return GL_RED;
      case GDK_SWIZZLE_G:
        return GL_GREEN;
      case GDK_SWIZZLE_B:
        return GL_BLUE;
      case GDK_SWIZZLE_A:
        return GL_ALPHA;
      case GDK_SWIZZLE_1:
        return GL_ONE;
      case GDK_SWIZZLE_0:
        return GL_ZERO;
      default:
        g_assert_not_reached ();
        return GL_ZERO;
    }
}

static inline void
gdk_swizzle_to_gl (GdkSwizzle swizzle,
                   GLint      out_swizzle[4])
{
  out_swizzle[0] = gdk_swizzle_component_to_gl (gdk_swizzle_get_component (swizzle, 0));
  out_swizzle[1] = gdk_swizzle_component_to_gl (gdk_swizzle_get_component (swizzle, 1));
  out_swizzle[2] = gdk_swizzle_component_to_gl (gdk_swizzle_get_component (swizzle, 2));
  out_swizzle[3] = gdk_swizzle_component_to_gl (gdk_swizzle_get_component (swizzle, 3));
}

Messung V0.5 in Prozent
C=97 H=96 G=96

¤ Dauer der Verarbeitung: 0.11 Sekunden  (vorverarbeitet am  2026-07-02) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik