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