From 0ecbd76b220ba6f3d02fa028b9c6481f7fb5c089 Mon Sep 17 00:00:00 2001 From: Tao Bao Date: Mon, 16 Jan 2017 21:16:58 -0800 Subject: minui: Export minui/minui.h. For libminui static and shared libraries. Test: build Change-Id: Ib30dc5e2ef4a3c8b3ca3a0cec68cb65e229a0c16 --- Android.mk | 6 +- minui/Android.mk | 31 +++++++--- minui/events.cpp | 2 +- minui/graphics.cpp | 6 +- minui/graphics.h | 2 +- minui/graphics_drm.cpp | 3 +- minui/graphics_fbdev.cpp | 3 +- minui/include/minui/minui.h | 135 ++++++++++++++++++++++++++++++++++++++++++++ minui/minui.h | 135 -------------------------------------------- minui/resources.cpp | 2 +- screen_ui.h | 4 +- wear_ui.cpp | 8 ++- 12 files changed, 180 insertions(+), 157 deletions(-) create mode 100644 minui/include/minui/minui.h delete mode 100644 minui/minui.h diff --git a/Android.mk b/Android.mk index 633f18d77..f8e5ac24a 100644 --- a/Android.mk +++ b/Android.mk @@ -151,7 +151,11 @@ LOCAL_SRC_FILES := \ asn1_decoder.cpp \ verifier.cpp \ ui.cpp -LOCAL_STATIC_LIBRARIES := libcrypto_utils libcrypto libbase +LOCAL_STATIC_LIBRARIES := \ + libminui \ + libcrypto_utils \ + libcrypto \ + libbase LOCAL_CFLAGS := -Werror include $(BUILD_STATIC_LIBRARY) diff --git a/minui/Android.mk b/minui/Android.mk index 67b81fc6d..281f64912 100644 --- a/minui/Android.mk +++ b/minui/Android.mk @@ -1,3 +1,17 @@ +# Copyright (C) 2007 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. + LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) @@ -9,16 +23,18 @@ LOCAL_SRC_FILES := \ graphics_fbdev.cpp \ resources.cpp \ -LOCAL_WHOLE_STATIC_LIBRARIES += libadf -LOCAL_WHOLE_STATIC_LIBRARIES += libdrm -LOCAL_WHOLE_STATIC_LIBRARIES += libsync_recovery -LOCAL_STATIC_LIBRARIES += libpng +LOCAL_WHOLE_STATIC_LIBRARIES := \ + libadf \ + libdrm \ + libsync_recovery + +LOCAL_STATIC_LIBRARIES := libpng LOCAL_CFLAGS := -Werror +LOCAL_C_INCLUDES := $(LOCAL_PATH)/include +LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include LOCAL_MODULE := libminui -LOCAL_CLANG := true - # This used to compare against values in double-quotes (which are just # ordinary characters in this context). Strip double-quotes from the # value so that either will work. @@ -43,9 +59,10 @@ include $(BUILD_STATIC_LIBRARY) # Used by OEMs for factory test images. include $(CLEAR_VARS) -LOCAL_CLANG := true LOCAL_MODULE := libminui LOCAL_WHOLE_STATIC_LIBRARIES += libminui LOCAL_SHARED_LIBRARIES := libpng LOCAL_CFLAGS := -Werror +LOCAL_C_INCLUDES := $(LOCAL_PATH)/include +LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include include $(BUILD_SHARED_LIBRARY) diff --git a/minui/events.cpp b/minui/events.cpp index e6e7bd28c..237af1ca5 100644 --- a/minui/events.cpp +++ b/minui/events.cpp @@ -25,7 +25,7 @@ #include -#include "minui.h" +#include "minui/minui.h" #define MAX_DEVICES 16 #define MAX_MISC_FDS 16 diff --git a/minui/graphics.cpp b/minui/graphics.cpp index dcca3ec41..34ea81c7c 100644 --- a/minui/graphics.cpp +++ b/minui/graphics.cpp @@ -14,7 +14,8 @@ * limitations under the License. */ -#include +#include "graphics.h" + #include #include #include @@ -32,8 +33,7 @@ #include #include "font_10x18.h" -#include "minui.h" -#include "graphics.h" +#include "minui/minui.h" static GRFont* gr_font = NULL; static minui_backend* gr_backend = NULL; diff --git a/minui/graphics.h b/minui/graphics.h index 52968eb10..1eaafc75a 100644 --- a/minui/graphics.h +++ b/minui/graphics.h @@ -17,7 +17,7 @@ #ifndef _GRAPHICS_H_ #define _GRAPHICS_H_ -#include "minui.h" +#include "minui/minui.h" // TODO: lose the function pointers. struct minui_backend { diff --git a/minui/graphics_drm.cpp b/minui/graphics_drm.cpp index 03e33b775..199f4d83c 100644 --- a/minui/graphics_drm.cpp +++ b/minui/graphics_drm.cpp @@ -16,7 +16,6 @@ #include #include -#include #include #include #include @@ -28,7 +27,7 @@ #include #include -#include "minui.h" +#include "minui/minui.h" #include "graphics.h" #define ARRAY_SIZE(A) (sizeof(A)/sizeof(*(A))) diff --git a/minui/graphics_fbdev.cpp b/minui/graphics_fbdev.cpp index 631ef4e13..2d70249ed 100644 --- a/minui/graphics_fbdev.cpp +++ b/minui/graphics_fbdev.cpp @@ -14,7 +14,6 @@ * limitations under the License. */ -#include #include #include #include @@ -30,7 +29,7 @@ #include #include -#include "minui.h" +#include "minui/minui.h" #include "graphics.h" static GRSurface* fbdev_init(minui_backend*); diff --git a/minui/include/minui/minui.h b/minui/include/minui/minui.h new file mode 100644 index 000000000..78890b84b --- /dev/null +++ b/minui/include/minui/minui.h @@ -0,0 +1,135 @@ +/* + * Copyright (C) 2007 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 _MINUI_H_ +#define _MINUI_H_ + +#include + +#include + +// +// Graphics. +// + +struct GRSurface { + int width; + int height; + int row_bytes; + int pixel_bytes; + unsigned char* data; +}; + +struct GRFont { + GRSurface* texture; + int char_width; + int char_height; +}; + +int gr_init(); +void gr_exit(); + +int gr_fb_width(); +int gr_fb_height(); + +void gr_flip(); +void gr_fb_blank(bool blank); + +void gr_clear(); // clear entire surface to current color +void gr_color(unsigned char r, unsigned char g, unsigned char b, unsigned char a); +void gr_fill(int x1, int y1, int x2, int y2); + +void gr_texticon(int x, int y, GRSurface* icon); + +const GRFont* gr_sys_font(); +int gr_init_font(const char* name, GRFont** dest); +void gr_text(const GRFont* font, int x, int y, const char *s, bool bold); +int gr_measure(const GRFont* font, const char *s); +void gr_font_size(const GRFont* font, int *x, int *y); + +void gr_blit(GRSurface* source, int sx, int sy, int w, int h, int dx, int dy); +unsigned int gr_get_width(GRSurface* surface); +unsigned int gr_get_height(GRSurface* surface); + +// +// Input events. +// + +struct input_event; + +// TODO: move these over to std::function. +typedef int (*ev_callback)(int fd, uint32_t epevents, void* data); +typedef int (*ev_set_key_callback)(int code, int value, void* data); + +int ev_init(ev_callback input_cb, void* data); +void ev_exit(); +int ev_add_fd(int fd, ev_callback cb, void* data); +void ev_iterate_available_keys(const std::function& f); +int ev_sync_key_state(ev_set_key_callback set_key_cb, void* data); + +// 'timeout' has the same semantics as poll(2). +// 0 : don't block +// < 0 : block forever +// > 0 : block for 'timeout' milliseconds +int ev_wait(int timeout); + +int ev_get_input(int fd, uint32_t epevents, input_event* ev); +void ev_dispatch(); +int ev_get_epollfd(); + +// +// Resources +// + +bool matches_locale(const char* prefix, const char* locale); + +// res_create_*_surface() functions return 0 if no error, else +// negative. +// +// A "display" surface is one that is intended to be drawn to the +// screen with gr_blit(). An "alpha" surface is a grayscale image +// interpreted as an alpha mask used to render text in the current +// color (with gr_text() or gr_texticon()). +// +// All these functions load PNG images from "/res/images/${name}.png". + +// Load a single display surface from a PNG image. +int res_create_display_surface(const char* name, GRSurface** pSurface); + +// Load an array of display surfaces from a single PNG image. The PNG +// should have a 'Frames' text chunk whose value is the number of +// frames this image represents. The pixel data itself is interlaced +// by row. +int res_create_multi_display_surface(const char* name, int* frames, + int* fps, GRSurface*** pSurface); + +// Load a single alpha surface from a grayscale PNG image. +int res_create_alpha_surface(const char* name, GRSurface** pSurface); + +// Load part of a grayscale PNG image that is the first match for the +// given locale. The image is expected to be a composite of multiple +// translations of the same text, with special added rows that encode +// the subimages' size and intended locale in the pixel data. See +// bootable/recovery/tools/recovery_l10n for an app that will generate +// these specialized images from Android resources. +int res_create_localized_alpha_surface(const char* name, const char* locale, + GRSurface** pSurface); + +// Free a surface allocated by any of the res_create_*_surface() +// functions. +void res_free_surface(GRSurface* surface); + +#endif diff --git a/minui/minui.h b/minui/minui.h deleted file mode 100644 index 78890b84b..000000000 --- a/minui/minui.h +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright (C) 2007 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 _MINUI_H_ -#define _MINUI_H_ - -#include - -#include - -// -// Graphics. -// - -struct GRSurface { - int width; - int height; - int row_bytes; - int pixel_bytes; - unsigned char* data; -}; - -struct GRFont { - GRSurface* texture; - int char_width; - int char_height; -}; - -int gr_init(); -void gr_exit(); - -int gr_fb_width(); -int gr_fb_height(); - -void gr_flip(); -void gr_fb_blank(bool blank); - -void gr_clear(); // clear entire surface to current color -void gr_color(unsigned char r, unsigned char g, unsigned char b, unsigned char a); -void gr_fill(int x1, int y1, int x2, int y2); - -void gr_texticon(int x, int y, GRSurface* icon); - -const GRFont* gr_sys_font(); -int gr_init_font(const char* name, GRFont** dest); -void gr_text(const GRFont* font, int x, int y, const char *s, bool bold); -int gr_measure(const GRFont* font, const char *s); -void gr_font_size(const GRFont* font, int *x, int *y); - -void gr_blit(GRSurface* source, int sx, int sy, int w, int h, int dx, int dy); -unsigned int gr_get_width(GRSurface* surface); -unsigned int gr_get_height(GRSurface* surface); - -// -// Input events. -// - -struct input_event; - -// TODO: move these over to std::function. -typedef int (*ev_callback)(int fd, uint32_t epevents, void* data); -typedef int (*ev_set_key_callback)(int code, int value, void* data); - -int ev_init(ev_callback input_cb, void* data); -void ev_exit(); -int ev_add_fd(int fd, ev_callback cb, void* data); -void ev_iterate_available_keys(const std::function& f); -int ev_sync_key_state(ev_set_key_callback set_key_cb, void* data); - -// 'timeout' has the same semantics as poll(2). -// 0 : don't block -// < 0 : block forever -// > 0 : block for 'timeout' milliseconds -int ev_wait(int timeout); - -int ev_get_input(int fd, uint32_t epevents, input_event* ev); -void ev_dispatch(); -int ev_get_epollfd(); - -// -// Resources -// - -bool matches_locale(const char* prefix, const char* locale); - -// res_create_*_surface() functions return 0 if no error, else -// negative. -// -// A "display" surface is one that is intended to be drawn to the -// screen with gr_blit(). An "alpha" surface is a grayscale image -// interpreted as an alpha mask used to render text in the current -// color (with gr_text() or gr_texticon()). -// -// All these functions load PNG images from "/res/images/${name}.png". - -// Load a single display surface from a PNG image. -int res_create_display_surface(const char* name, GRSurface** pSurface); - -// Load an array of display surfaces from a single PNG image. The PNG -// should have a 'Frames' text chunk whose value is the number of -// frames this image represents. The pixel data itself is interlaced -// by row. -int res_create_multi_display_surface(const char* name, int* frames, - int* fps, GRSurface*** pSurface); - -// Load a single alpha surface from a grayscale PNG image. -int res_create_alpha_surface(const char* name, GRSurface** pSurface); - -// Load part of a grayscale PNG image that is the first match for the -// given locale. The image is expected to be a composite of multiple -// translations of the same text, with special added rows that encode -// the subimages' size and intended locale in the pixel data. See -// bootable/recovery/tools/recovery_l10n for an app that will generate -// these specialized images from Android resources. -int res_create_localized_alpha_surface(const char* name, const char* locale, - GRSurface** pSurface); - -// Free a surface allocated by any of the res_create_*_surface() -// functions. -void res_free_surface(GRSurface* surface); - -#endif diff --git a/minui/resources.cpp b/minui/resources.cpp index 9ccbf4b1b..e6909f269 100644 --- a/minui/resources.cpp +++ b/minui/resources.cpp @@ -31,7 +31,7 @@ #include #include -#include "minui.h" +#include "minui/minui.h" #define SURFACE_DATA_ALIGNMENT 8 diff --git a/screen_ui.h b/screen_ui.h index 3ad64907e..b2dcf4aeb 100644 --- a/screen_ui.h +++ b/screen_ui.h @@ -23,7 +23,9 @@ #include #include "ui.h" -#include "minui/minui.h" + +// From minui/minui.h. +struct GRSurface; // Implementation of RecoveryUI appropriate for devices with a screen // (shows an icon + a progress bar, text logging, menu, etc.) diff --git a/wear_ui.cpp b/wear_ui.cpp index b4c63a5ae..6c0286558 100644 --- a/wear_ui.cpp +++ b/wear_ui.cpp @@ -30,11 +30,13 @@ #include #include +#include +#include +#include +#include + #include "common.h" #include "device.h" -#include "android-base/properties.h" -#include "android-base/strings.h" -#include "android-base/stringprintf.h" // There's only (at most) one of these objects, and global callbacks // (for pthread_create, and the input event system) need to find it, -- cgit v1.2.3