BakedOpDispatcher.h revision 9e7fcfda28fde747ba4e026772007cea77374e16
19e7fcfda28fde747ba4e026772007cea77374e16Chris Craik/*
29e7fcfda28fde747ba4e026772007cea77374e16Chris Craik * Copyright (C) 2015 The Android Open Source Project
39e7fcfda28fde747ba4e026772007cea77374e16Chris Craik *
49e7fcfda28fde747ba4e026772007cea77374e16Chris Craik * Licensed under the Apache License, Version 2.0 (the "License");
59e7fcfda28fde747ba4e026772007cea77374e16Chris Craik * you may not use this file except in compliance with the License.
69e7fcfda28fde747ba4e026772007cea77374e16Chris Craik * You may obtain a copy of the License at
79e7fcfda28fde747ba4e026772007cea77374e16Chris Craik *
89e7fcfda28fde747ba4e026772007cea77374e16Chris Craik *      http://www.apache.org/licenses/LICENSE-2.0
99e7fcfda28fde747ba4e026772007cea77374e16Chris Craik *
109e7fcfda28fde747ba4e026772007cea77374e16Chris Craik * Unless required by applicable law or agreed to in writing, software
119e7fcfda28fde747ba4e026772007cea77374e16Chris Craik * distributed under the License is distributed on an "AS IS" BASIS,
129e7fcfda28fde747ba4e026772007cea77374e16Chris Craik * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139e7fcfda28fde747ba4e026772007cea77374e16Chris Craik * See the License for the specific language governing permissions and
149e7fcfda28fde747ba4e026772007cea77374e16Chris Craik * limitations under the License.
159e7fcfda28fde747ba4e026772007cea77374e16Chris Craik */
169e7fcfda28fde747ba4e026772007cea77374e16Chris Craik
179e7fcfda28fde747ba4e026772007cea77374e16Chris Craik#ifndef ANDROID_HWUI_BAKED_OP_DISPATCHER_H
189e7fcfda28fde747ba4e026772007cea77374e16Chris Craik#define ANDROID_HWUI_BAKED_OP_DISPATCHER_H
199e7fcfda28fde747ba4e026772007cea77374e16Chris Craik
209e7fcfda28fde747ba4e026772007cea77374e16Chris Craik#include "BakedOpState.h"
219e7fcfda28fde747ba4e026772007cea77374e16Chris Craik#include "RecordedOp.h"
229e7fcfda28fde747ba4e026772007cea77374e16Chris Craik
239e7fcfda28fde747ba4e026772007cea77374e16Chris Craiknamespace android {
249e7fcfda28fde747ba4e026772007cea77374e16Chris Craiknamespace uirenderer {
259e7fcfda28fde747ba4e026772007cea77374e16Chris Craik
269e7fcfda28fde747ba4e026772007cea77374e16Chris Craik/**
279e7fcfda28fde747ba4e026772007cea77374e16Chris Craik * Provides all "onBitmapOp(...)" style static methods for every op type, which convert the
289e7fcfda28fde747ba4e026772007cea77374e16Chris Craik * RecordedOps and their state to Glops, and renders them with the provided BakedOpRenderer.
299e7fcfda28fde747ba4e026772007cea77374e16Chris Craik *
309e7fcfda28fde747ba4e026772007cea77374e16Chris Craik * This dispatcher is separate from the renderer so that the dispatcher / renderer interaction is
319e7fcfda28fde747ba4e026772007cea77374e16Chris Craik * minimal through public BakedOpRenderer APIs.
329e7fcfda28fde747ba4e026772007cea77374e16Chris Craik */
339e7fcfda28fde747ba4e026772007cea77374e16Chris Craikclass BakedOpDispatcher {
349e7fcfda28fde747ba4e026772007cea77374e16Chris Craikpublic:
359e7fcfda28fde747ba4e026772007cea77374e16Chris Craik    // Declares all "onBitmapOp(...)" style methods for every op type
369e7fcfda28fde747ba4e026772007cea77374e16Chris Craik#define DISPATCH_METHOD(Type) \
379e7fcfda28fde747ba4e026772007cea77374e16Chris Craik        static void on##Type(BakedOpRenderer& renderer, const Type& op, const BakedOpState& state);
389e7fcfda28fde747ba4e026772007cea77374e16Chris Craik    MAP_OPS(DISPATCH_METHOD);
399e7fcfda28fde747ba4e026772007cea77374e16Chris Craik};
409e7fcfda28fde747ba4e026772007cea77374e16Chris Craik
419e7fcfda28fde747ba4e026772007cea77374e16Chris Craik}; // namespace uirenderer
429e7fcfda28fde747ba4e026772007cea77374e16Chris Craik}; // namespace android
439e7fcfda28fde747ba4e026772007cea77374e16Chris Craik
449e7fcfda28fde747ba4e026772007cea77374e16Chris Craik#endif // ANDROID_HWUI_BAKED_OP_DISPATCHER_H
45