15290f2087a314506e2926edd9640cf1feb793866Doug Zongker/*
25290f2087a314506e2926edd9640cf1feb793866Doug Zongker * Copyright (C) 2014 The Android Open Source Project
35290f2087a314506e2926edd9640cf1feb793866Doug Zongker *
45290f2087a314506e2926edd9640cf1feb793866Doug Zongker * Licensed under the Apache License, Version 2.0 (the "License");
55290f2087a314506e2926edd9640cf1feb793866Doug Zongker * you may not use this file except in compliance with the License.
65290f2087a314506e2926edd9640cf1feb793866Doug Zongker * You may obtain a copy of the License at
75290f2087a314506e2926edd9640cf1feb793866Doug Zongker *
85290f2087a314506e2926edd9640cf1feb793866Doug Zongker *      http://www.apache.org/licenses/LICENSE-2.0
95290f2087a314506e2926edd9640cf1feb793866Doug Zongker *
105290f2087a314506e2926edd9640cf1feb793866Doug Zongker * Unless required by applicable law or agreed to in writing, software
115290f2087a314506e2926edd9640cf1feb793866Doug Zongker * distributed under the License is distributed on an "AS IS" BASIS,
125290f2087a314506e2926edd9640cf1feb793866Doug Zongker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135290f2087a314506e2926edd9640cf1feb793866Doug Zongker * See the License for the specific language governing permissions and
145290f2087a314506e2926edd9640cf1feb793866Doug Zongker * limitations under the License.
155290f2087a314506e2926edd9640cf1feb793866Doug Zongker */
165290f2087a314506e2926edd9640cf1feb793866Doug Zongker
175290f2087a314506e2926edd9640cf1feb793866Doug Zongker#ifndef _GRAPHICS_H_
185290f2087a314506e2926edd9640cf1feb793866Doug Zongker#define _GRAPHICS_H_
195290f2087a314506e2926edd9640cf1feb793866Doug Zongker
205290f2087a314506e2926edd9640cf1feb793866Doug Zongker#ifdef __cplusplus
215290f2087a314506e2926edd9640cf1feb793866Doug Zongkerextern "C" {
225290f2087a314506e2926edd9640cf1feb793866Doug Zongker#endif
235290f2087a314506e2926edd9640cf1feb793866Doug Zongker
245290f2087a314506e2926edd9640cf1feb793866Doug Zongker#include <stdbool.h>
255290f2087a314506e2926edd9640cf1feb793866Doug Zongker#include "minui.h"
265290f2087a314506e2926edd9640cf1feb793866Doug Zongker
275290f2087a314506e2926edd9640cf1feb793866Doug Zongkertypedef struct minui_backend {
285290f2087a314506e2926edd9640cf1feb793866Doug Zongker    // Initializes the backend and returns a gr_surface to draw into.
295290f2087a314506e2926edd9640cf1feb793866Doug Zongker    gr_surface (*init)(struct minui_backend*);
305290f2087a314506e2926edd9640cf1feb793866Doug Zongker
315290f2087a314506e2926edd9640cf1feb793866Doug Zongker    // Causes the current drawing surface (returned by the most recent
325290f2087a314506e2926edd9640cf1feb793866Doug Zongker    // call to flip() or init()) to be displayed, and returns a new
335290f2087a314506e2926edd9640cf1feb793866Doug Zongker    // drawing surface.
345290f2087a314506e2926edd9640cf1feb793866Doug Zongker    gr_surface (*flip)(struct minui_backend*);
355290f2087a314506e2926edd9640cf1feb793866Doug Zongker
365290f2087a314506e2926edd9640cf1feb793866Doug Zongker    // Blank (or unblank) the screen.
375290f2087a314506e2926edd9640cf1feb793866Doug Zongker    void (*blank)(struct minui_backend*, bool);
385290f2087a314506e2926edd9640cf1feb793866Doug Zongker
395290f2087a314506e2926edd9640cf1feb793866Doug Zongker    // Device cleanup when drawing is done.
405290f2087a314506e2926edd9640cf1feb793866Doug Zongker    void (*exit)(struct minui_backend*);
415290f2087a314506e2926edd9640cf1feb793866Doug Zongker} minui_backend;
425290f2087a314506e2926edd9640cf1feb793866Doug Zongker
435290f2087a314506e2926edd9640cf1feb793866Doug Zongkerminui_backend* open_fbdev();
4441909ddefbb57a9ce3c417341c1f83261e482046Greg Hackmannminui_backend* open_adf();
455290f2087a314506e2926edd9640cf1feb793866Doug Zongker
465290f2087a314506e2926edd9640cf1feb793866Doug Zongker#ifdef __cplusplus
475290f2087a314506e2926edd9640cf1feb793866Doug Zongker}
485290f2087a314506e2926edd9640cf1feb793866Doug Zongker#endif
495290f2087a314506e2926edd9640cf1feb793866Doug Zongker
505290f2087a314506e2926edd9640cf1feb793866Doug Zongker#endif
51