Class ContentFormats

All Implemented Interfaces:
PointerInterface

public class ContentFormats extends Record
The `GdkContentFormats` structure is used to advertise and negotiate the
format of content.

You will encounter `GdkContentFormats` when interacting with objects
controlling operations that pass data between different widgets, window
or application, like [class@Gdk.Drag], [class@Gdk.Drop],
[class@Gdk.Clipboard] or [class@Gdk.ContentProvider].

GDK supports content in 2 forms: `GType` and mime type.
Using `GTypes` is meant only for in-process content transfers. Mime types
are meant to be used for data passing both in-process and out-of-process.
The details of how data is passed is described in the documentation of
the actual implementations. To transform between the two forms,
[class@Gdk.ContentSerializer] and [class@Gdk.ContentDeserializer] are used.

A `GdkContentFormats` describes a set of possible formats content can be
exchanged in. It is assumed that this set is ordered. `GTypes` are more
important than mime types. Order between different `GTypes` or mime types
is the order they were added in, most important first. Functions that
care about order, such as [method@Gdk.ContentFormats.union], will describe
in their documentation how they interpret that order, though in general the
order of the first argument is considered the primary order of the result,
followed by the order of further arguments.

For debugging purposes, the function [method@Gdk.ContentFormats.to_string]
exists. It will print a comma-separated list of formats from most important
to least important.

`GdkContentFormats` is an immutable struct. After creation, you cannot change
the types it represents. Instead, new `GdkContentFormats` have to be created.
The [struct@Gdk.ContentFormatsBuilder] structure is meant to help in this
endeavor.

https://docs.gtk.org/gdk4/struct.ContentFormats.html

  • Constructor Details

    • ContentFormats

      public ContentFormats(PointerContainer pointer)
    • ContentFormats

      public ContentFormats(@Nullable Strs mime_types, int n_mime_types)
      Creates a new `GdkContentFormats` from an array of mime types.

      The mime types must be valid and different from each other or the
      behavior of the return value is undefined. If you cannot guarantee
      this, use [struct@Gdk.ContentFormatsBuilder] instead.
      Parameters:
      mime_types - Pointer to an array of mime types
      n_mime_types - number of entries in @mime_types.
  • Method Details

    • getClassHandler

      public static ClassHandler getClassHandler()
    • newForGtypeContentFormats

      public static ContentFormats newForGtypeContentFormats(long type)
      Creates a new `GdkContentFormats` for a given `GType`.
      Parameters:
      type - a `GType`
      Returns:
      a new `GdkContentFormats`
    • containGtype

      public boolean containGtype(long type)
      Checks if a given `GType` is part of the given @formats.
      Parameters:
      type - the `GType` to search for
      Returns:
      %TRUE if the `GType` was found
    • containMimeType

      public boolean containMimeType(@Nonnull Str mime_type)
      Checks if a given mime type is part of the given @formats.
      Parameters:
      mime_type - the mime type to search for
      Returns:
      %TRUE if the mime_type was found
    • containMimeType

      public boolean containMimeType(String mime_type)
      Checks if a given mime type is part of the given @formats.
      Parameters:
      mime_type - the mime type to search for
      Returns:
      %TRUE if the mime_type was found
    • getMimeTypes

      public Strs getMimeTypes(@Nullable Int64 n_mime_types)
      Gets the mime types included in @formats.

      Note that @formats may not contain any mime types, in particular
      when they are empty. In that case %NULL will be returned.
      Parameters:
      n_mime_types - optional pointer to take the number of mime types contained in the return value
      Returns:
      %NULL-terminated array of interned strings of mime types included in @formats
    • match

      public boolean match(@Nonnull ContentFormats second)
      Checks if @first and @second have any matching formats.
      Parameters:
      second - the `GdkContentFormats` to intersect with
      Returns:
      %TRUE if a matching format was found.
    • matchGtype

      public long matchGtype(@Nonnull ContentFormats second)
      Finds the first `GType` from @first that is also contained
      in @second.

      If no matching `GType` is found, %G_TYPE_INVALID is returned.
      Parameters:
      second - the `GdkContentFormats` to intersect with
      Returns:
      The first common `GType` or %G_TYPE_INVALID if none.
    • matchMimeType

      public Str matchMimeType(@Nonnull ContentFormats second)
      Finds the first mime type from @first that is also contained
      in @second.

      If no matching mime type is found, %NULL is returned.
      Parameters:
      second - the `GdkContentFormats` to intersect with
      Returns:
      The first common mime type or %NULL if none
    • print

      public void print(@Nonnull GString string)
      Prints the given @formats into a string for human consumption.

      The result of this function can later be parsed with
      [func@Gdk.ContentFormats.parse].
      Parameters:
      string - a `GString` to print into
    • ref

      public ContentFormats ref()
      Increases the reference count of a `GdkContentFormats` by one.
      Returns:
      the passed in `GdkContentFormats`.
    • toStr

      public Str toStr()
      Prints the given @formats into a human-readable string.

      The resulting string can be parsed with [func@Gdk.ContentFormats.parse].

      This is a small wrapper around [method@Gdk.ContentFormats.print]
      to help when debugging.
      Returns:
      a new string
    • union

      public ContentFormats union(@Nonnull ContentFormats second)
      Append all missing types from @second to @first, in the order
      they had in @second.
      Parameters:
      second - the `GdkContentFormats` to merge from
      Returns:
      a new `GdkContentFormats`
    • unionDeserializeGtypes

      public ContentFormats unionDeserializeGtypes()
      Add GTypes for mime types in @formats for which deserializers are
      registered.
      Returns:
      a new `GdkContentFormats`
    • unionDeserializeMimeTypes

      public ContentFormats unionDeserializeMimeTypes()
      Add mime types for GTypes in @formats for which deserializers are
      registered.
      Returns:
      a new `GdkContentFormats`
    • unionSerializeGtypes

      public ContentFormats unionSerializeGtypes()
      Add GTypes for the mime types in @formats for which serializers are
      registered.
      Returns:
      a new `GdkContentFormats`
    • unionSerializeMimeTypes

      public ContentFormats unionSerializeMimeTypes()
      Add mime types for GTypes in @formats for which serializers are
      registered.
      Returns:
      a new `GdkContentFormats`
    • unref

      public void unref()
      Decreases the reference count of a `GdkContentFormats` by one.

      If the resulting reference count is zero, frees the formats.
    • parse

      public static ContentFormats parse(@Nonnull Str string)
      Parses the given @string into `GdkContentFormats` and
      returns the formats.

      Strings printed via [method@Gdk.ContentFormats.to_string]
      can be read in again successfully using this function.

      If @string does not describe valid content formats, %NULL
      is returned.
      Parameters:
      string - the string to parse
      Returns:
      the content formats if @string is valid
    • getTypeID

      public static long getTypeID()
    • getParentTypeID

      public static long getParentTypeID()
    • getTypeSize

      public static TypeSystem.TypeSize getTypeSize()
    • getParentTypeSize

      public static TypeSystem.TypeSize getParentTypeSize()
    • getInstanceSize

      public static int getInstanceSize()