
The initial target color state is the color state of the stage view being painted to. If we're painting to an arbitrary framebuffer, it's currently hard coded to sRGB/electrical. The content color state is not set on construction, but when starting to paint, it's set to the color state of the stage itself. Whenever an actor is painted, it'll set the color state to the color state of itself. The intention is that offscreen rendering pushes a target color state that causes painting to it to not necessarily be in the stage view color state. Pass color state with offscreen framebuffer, as this avoids hard coding sRGB in the lower level bits of paint contexts. It's still practically hard coded, only that it's derived from somewhere else (e.g. the stage or window actor). Nothing is actually using this yet, but will eventually. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3433>
42 lines
1.7 KiB
C
42 lines
1.7 KiB
C
/*
|
|
* Copyright (C) 2019 Red Hat Inc.
|
|
*
|
|
* 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 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 <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "clutter/clutter-paint-context.h"
|
|
|
|
ClutterPaintContext *
|
|
clutter_paint_context_new_for_view (ClutterStageView *view,
|
|
const MtkRegion *redraw_clip,
|
|
GArray *clip_frusta,
|
|
ClutterPaintFlag paint_flags);
|
|
|
|
gboolean clutter_paint_context_is_drawing_off_stage (ClutterPaintContext *paint_context);
|
|
|
|
CoglFramebuffer * clutter_paint_context_get_base_framebuffer (ClutterPaintContext *paint_context);
|
|
|
|
const GArray *
|
|
clutter_paint_context_get_clip_frusta (ClutterPaintContext *paint_context);
|
|
|
|
void clutter_paint_context_assign_frame (ClutterPaintContext *paint_context,
|
|
ClutterFrame *frame);
|
|
|
|
void clutter_paint_context_push_target_color_state (ClutterPaintContext *paint_context,
|
|
ClutterColorState *color_state);
|
|
|
|
void clutter_paint_context_pop_target_color_state (ClutterPaintContext *paint_context);
|