/* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef ANDROID_HWUI_BAKED_OP_RENDERER_H #define ANDROID_HWUI_BAKED_OP_RENDERER_H #include "BakedOpState.h" #include "Matrix.h" namespace android { namespace uirenderer { class Caches; struct Glop; class Layer; class RenderState; class BakedOpRenderer { public: class Info { public: Info(Caches& caches, RenderState& renderState, bool opaque) : renderState(renderState) , caches(caches) , opaque(opaque) { } void setViewport(uint32_t width, uint32_t height); Texture* getTexture(const SkBitmap* bitmap); void renderGlop(const BakedOpState& state, const Glop& glop); RenderState& renderState; Caches& caches; bool didDraw = false; Layer* layer = nullptr; // where should these live? layer state object? bool opaque; uint32_t viewportWidth = 0; uint32_t viewportHeight = 0; Matrix4 orthoMatrix; }; static Layer* startLayer(Info& info, uint32_t width, uint32_t height); static void endLayer(Info& info); static void startFrame(Info& info, uint32_t width, uint32_t height); static void endFrame(Info& info); /** * Declare all "onBitmapOp(...)" style function for every op type. * * These functions will perform the actual rendering of the individual operations in OpenGL, * given the transform/clip and other state built into the BakedOpState object passed in. */ #define BAKED_OP_RENDERER_METHOD(Type) static void on##Type(Info& info, const Type& op, const BakedOpState& state); MAP_OPS(BAKED_OP_RENDERER_METHOD); }; }; // namespace uirenderer }; // namespace android #endif // ANDROID_HWUI_BAKED_OP_RENDERER_H