Update minuitwrp graphics in line with latest minui

Note: events.cpp is still old code renamed to cpp to make it
easier to call functions like gr_fb_width().

I had to modify AOSP fbdev code to provide a separate memory
surface for drawing to as drawing directly to the framebuffer
resulted in rendering taking about 5 times longer.

I also modified AOSP adf code to provide a separate memory surface
for drawing for the same performance reasons. The Nexus 9 supports
adf graphics.

Overlay graphics work on at least one device. Overlay provides a
separate memory buffer already so performance is good.

I do not have a drm device yet that I know of. I made some attempt
to update the drm code to determine the correct pixel format based
on the drm graphics format, but what is available in pixel flinger
and what is available in drm do not line up all that well. Reports
are that the Pixel C is using drm graphics, but performance is
slow, likely due to the use of a mmap instead of a memory buffyer.

Change-Id: Ibd45bccca6ac2cb826037aa9b2aa5065cf683eed
diff --git a/gui/action.cpp b/gui/action.cpp
index 8895e40..240db8f 100644
--- a/gui/action.cpp
+++ b/gui/action.cpp
@@ -43,15 +43,16 @@
 #include "../adb_install.h"
 #include "../fuse_sideload.h"
 #include "blanktimer.hpp"
+
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 #include "../variables.h"
 #include "../twinstall.h"
 #include "cutils/properties.h"
 #include "../adb_install.h"
 #include "../set_metadata.h"
 };
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
diff --git a/gui/animation.cpp b/gui/animation.cpp
index 888b4ab..d45373d 100644
--- a/gui/animation.cpp
+++ b/gui/animation.cpp
@@ -19,8 +19,8 @@
 
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
diff --git a/gui/blanktimer.cpp b/gui/blanktimer.cpp
index 06208e2..4662b1f 100644
--- a/gui/blanktimer.cpp
+++ b/gui/blanktimer.cpp
@@ -26,9 +26,9 @@
 #include "blanktimer.hpp"
 #include "../data.hpp"
 extern "C" {
-#include "../minuitwrp/minui.h"
 #include "../twcommon.h"
 }
+#include "../minuitwrp/minui.h"
 #include "../twrp-functions.hpp"
 #include "../variables.h"
 
@@ -71,7 +71,8 @@
 		PageManager::ChangeOverlay("lock");
 	}
 #ifndef TW_NO_SCREEN_BLANK
-	if (state == kOff && gr_fb_blank(1) >= 0) {
+	if (state == kOff) {
+		gr_fb_blank(true);
 		state = kBlanked;
 	}
 #endif
@@ -97,10 +98,7 @@
 	switch (state) {
 		case kBlanked:
 #ifndef TW_NO_SCREEN_BLANK
-			if (gr_fb_blank(0) < 0) {
-				LOGINFO("blanktimer::resetTimerAndUnblank failed to gr_fb_blank(0)\n");
-				break;
-			}
+			gr_fb_blank(false);
 #endif
 			// TODO: this is asymmetric with postscreenblank.sh - shouldn't it be under the next case label?
 			TWFunc::check_and_run_script("/sbin/postscreenunblank.sh", "unblank");
diff --git a/gui/button.cpp b/gui/button.cpp
index a4c1b52..45614e4 100644
--- a/gui/button.cpp
+++ b/gui/button.cpp
@@ -36,8 +36,8 @@
 
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
diff --git a/gui/checkbox.cpp b/gui/checkbox.cpp
index 1760bac..e79f0cd 100644
--- a/gui/checkbox.cpp
+++ b/gui/checkbox.cpp
@@ -19,8 +19,8 @@
 
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
diff --git a/gui/console.cpp b/gui/console.cpp
index b5204fb..6f375ff 100644
--- a/gui/console.cpp
+++ b/gui/console.cpp
@@ -37,8 +37,8 @@
 
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
diff --git a/gui/fileselector.cpp b/gui/fileselector.cpp
index a97ff34..23f235c 100644
--- a/gui/fileselector.cpp
+++ b/gui/fileselector.cpp
@@ -23,8 +23,8 @@
 
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
diff --git a/gui/fill.cpp b/gui/fill.cpp
index b315cd0..d0a1cfd 100644
--- a/gui/fill.cpp
+++ b/gui/fill.cpp
@@ -19,8 +19,8 @@
 
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
diff --git a/gui/gui.cpp b/gui/gui.cpp
index 7cf21b0..f8a6a73 100644
--- a/gui/gui.cpp
+++ b/gui/gui.cpp
@@ -38,9 +38,9 @@
 extern "C"
 {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 #include <pixelflinger/pixelflinger.h>
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
diff --git a/gui/image.cpp b/gui/image.cpp
index 8b43aaa..2107d55 100644
--- a/gui/image.cpp
+++ b/gui/image.cpp
@@ -19,8 +19,8 @@
 
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
diff --git a/gui/input.cpp b/gui/input.cpp
index 68bd163..c12ecc2 100644
--- a/gui/input.cpp
+++ b/gui/input.cpp
@@ -39,8 +39,8 @@
 
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
@@ -196,7 +196,7 @@
 			maskedValue += mMask;
 		displayValue = maskedValue;
 	}
-	textWidth = gr_measureEx(displayValue.c_str(), fontResource);
+	textWidth = gr_ttf_measureEx(displayValue.c_str(), fontResource);
 	if (textWidth <= mRenderW) {
 		lastX = x;
 		scrollingX = 0;
@@ -209,7 +209,7 @@
 	if (skipChars && skipChars < displayValue.size())
 		displayValue.erase(0, skipChars);
 
-	textWidth = gr_measureEx(displayValue.c_str(), fontResource);
+	textWidth = gr_ttf_measureEx(displayValue.c_str(), fontResource);
 	mRendered = false;
 
 	int deltaX, deltaText, newWidth;
@@ -222,11 +222,11 @@
 		if (mCursorLocation == -1) {
 			displayValue = originalValue;
 			skipChars = 0;
-			textWidth = gr_measureEx(displayValue.c_str(), fontResource);
+			textWidth = gr_ttf_measureEx(displayValue.c_str(), fontResource);
 			while (textWidth > mRenderW) {
 				displayValue.erase(0, 1);
 				skipChars++;
-				textWidth = gr_measureEx(displayValue.c_str(), fontResource);
+				textWidth = gr_ttf_measureEx(displayValue.c_str(), fontResource);
 			}
 			scrollingX = mRenderW - textWidth;
 			mInputText->SkipCharCount(skipChars);
@@ -237,12 +237,12 @@
 
 			cursorLocate = displayValue;
 			cursorLocate.resize(mCursorLocation);
-			textWidth = gr_measureEx(cursorLocate.c_str(), fontResource);
+			textWidth = gr_ttf_measureEx(cursorLocate.c_str(), fontResource);
 			while (textWidth > mRenderW) {
 				skipChars++;
 				mCursorLocation--;
 				cursorLocate.erase(0, 1);
-				textWidth = gr_measureEx(cursorLocate.c_str(), fontResource);
+				textWidth = gr_ttf_measureEx(cursorLocate.c_str(), fontResource);
 				adjust_scrollingX = -1;
 			}
 			if (adjust_scrollingX) {
@@ -261,7 +261,7 @@
 				}
 				insertChar = originalValue.substr(skipChars - 1, 1);
 				displayValue.insert(0, insertChar);
-				newWidth = gr_measureEx(displayValue.c_str(), fontResource);
+				newWidth = gr_ttf_measureEx(displayValue.c_str(), fontResource);
 				deltaText = newWidth - textWidth;
 				if (newWidth > mRenderW) {
 					scrollingX = mRenderW - textWidth;
@@ -289,7 +289,7 @@
 			}
 			insertChar = originalValue.substr(skipChars - 1, 1);
 			displayValue.insert(0, insertChar);
-			newWidth = gr_measureEx(displayValue.c_str(), fontResource);
+			newWidth = gr_ttf_measureEx(displayValue.c_str(), fontResource);
 			deltaText = newWidth - textWidth;
 			if (deltaText < deltaX) {
 				lastX += deltaText;
@@ -324,7 +324,7 @@
 			deltaX = lastX - x;
 			displayValue.erase(0, 1);
 			skipChars++;
-			newWidth = gr_measureEx(displayValue.c_str(), fontResource);
+			newWidth = gr_ttf_measureEx(displayValue.c_str(), fontResource);
 			deltaText = textWidth - newWidth;
 			if (newWidth <= mRenderW) {
 				scrollingX = mRenderW - newWidth;
@@ -407,15 +407,15 @@
 
 					cursorDisplay = displayValue;
 					cursorDisplay.resize(mCursorLocation);
-					cursorX = gr_measureEx(cursorDisplay.c_str(), fontResource) + mRenderX;
+					cursorX = gr_ttf_measureEx(cursorDisplay.c_str(), fontResource) + mRenderX;
 				} else {
 					// Cursor location is after the end of the text  - reset to -1
 					mCursorLocation = -1;
-					cursorX = gr_measureEx(displayValue.c_str(), fontResource) + mRenderX;
+					cursorX = gr_ttf_measureEx(displayValue.c_str(), fontResource) + mRenderX;
 				}
 			} else {
 				// Cursor is at the end (-1)
-				cursorX = gr_measureEx(displayValue.c_str(), fontResource) + mRenderX;
+				cursorX = gr_ttf_measureEx(displayValue.c_str(), fontResource) + mRenderX;
 			}
 		}
 		cursorX += scrollingX;
@@ -534,7 +534,7 @@
 			for(index=0; index<displayValue.size(); index++)
 			{
 				cursorString = displayValue.substr(0, index);
-				cursorX = gr_measureEx(cursorString.c_str(), fontResource) + mRenderX;
+				cursorX = gr_ttf_measureEx(cursorString.c_str(), fontResource) + mRenderX;
 				if (cursorX > x) {
 					if (index > 0)
 						mCursorLocation = index - 1;
diff --git a/gui/keyboard.cpp b/gui/keyboard.cpp
index 3b8fdc9..4a78ad7 100644
--- a/gui/keyboard.cpp
+++ b/gui/keyboard.cpp
@@ -25,9 +25,9 @@
 
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 #include "gui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
@@ -333,7 +333,7 @@
 	else if (!labelText.empty())
 	{
 		void* fontResource = labelFont->GetResource();
-		int textW = gr_measureEx(labelText.c_str(), fontResource);
+		int textW = gr_ttf_measureEx(labelText.c_str(), fontResource);
 		int textH = labelFont->GetHeight();
 		int textX = keyX + (keyW - textW) / 2;
 		int textY = keyY + (keyH - textH) / 2;
@@ -347,7 +347,7 @@
 		gr_color(mLongpressFontColor.red, mLongpressFontColor.green, mLongpressFontColor.blue, mLongpressFontColor.alpha);
 		string text(1, keychar);
 		int textH = mLongpressFont->GetHeight();
-		int textW = gr_measureEx(text.c_str(), fontResource);
+		int textW = gr_ttf_measureEx(text.c_str(), fontResource);
 		int textX = keyX + keyW - longpressOffsetX - textW;
 		int textY = keyY + longpressOffsetY;
 		gr_textEx_scaleW(textX, textY, text.c_str(), fontResource, keyW, TOP_LEFT, 0);
diff --git a/gui/listbox.cpp b/gui/listbox.cpp
index b0d2731..e10fee7 100644
--- a/gui/listbox.cpp
+++ b/gui/listbox.cpp
@@ -20,8 +20,8 @@
 
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
diff --git a/gui/mousecursor.cpp b/gui/mousecursor.cpp
index 84e6322..bd730df 100644
--- a/gui/mousecursor.cpp
+++ b/gui/mousecursor.cpp
@@ -17,8 +17,8 @@
 
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
diff --git a/gui/pages.cpp b/gui/pages.cpp
index c455662..4a4c523 100644
--- a/gui/pages.cpp
+++ b/gui/pages.cpp
@@ -39,11 +39,11 @@
 
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 #include "../minzip/SysUtil.h"
 #include "../minzip/Zip.h"
 #include "gui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
diff --git a/gui/partitionlist.cpp b/gui/partitionlist.cpp
index 102802d..ff207fa 100644
--- a/gui/partitionlist.cpp
+++ b/gui/partitionlist.cpp
@@ -22,8 +22,8 @@
 
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
diff --git a/gui/patternpassword.cpp b/gui/patternpassword.cpp
index a6ab831..96054c1 100644
--- a/gui/patternpassword.cpp
+++ b/gui/patternpassword.cpp
@@ -13,8 +13,8 @@
 
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
diff --git a/gui/progressbar.cpp b/gui/progressbar.cpp
index a478a40..fc2a497 100644
--- a/gui/progressbar.cpp
+++ b/gui/progressbar.cpp
@@ -19,8 +19,8 @@
 
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
diff --git a/gui/resources.cpp b/gui/resources.cpp
index a8f4199..e7611dd 100644
--- a/gui/resources.cpp
+++ b/gui/resources.cpp
@@ -14,9 +14,9 @@
 #include "../minzip/Zip.h"
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 #include "gui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
diff --git a/gui/resources.hpp b/gui/resources.hpp
index ce06d96..4548c10 100644
--- a/gui/resources.hpp
+++ b/gui/resources.hpp
@@ -49,7 +49,7 @@
 
 public:
 	void* GetResource() { return this ? mFont : NULL; }
-	int GetHeight() { return gr_getMaxFontHeight(this ? mFont : NULL); }
+	int GetHeight() { return gr_ttf_getMaxFontHeight(this ? mFont : NULL); }
 	void Override(xml_node<>* node, ZipArchive* pZip);
 
 protected:
diff --git a/gui/scrolllist.cpp b/gui/scrolllist.cpp
index 6e974f2..291b382 100644
--- a/gui/scrolllist.cpp
+++ b/gui/scrolllist.cpp
@@ -20,8 +20,8 @@
 
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
diff --git a/gui/slider.cpp b/gui/slider.cpp
index 6ee2024..59b295b 100644
--- a/gui/slider.cpp
+++ b/gui/slider.cpp
@@ -21,8 +21,8 @@
 
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
diff --git a/gui/slidervalue.cpp b/gui/slidervalue.cpp
index 8a44a3c..088620a 100644
--- a/gui/slidervalue.cpp
+++ b/gui/slidervalue.cpp
@@ -19,8 +19,8 @@
 
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
@@ -249,7 +249,7 @@
 	void* fontResource = NULL;
 	if (mFont)  fontResource = mFont->GetResource();
 
-	return gr_measureEx(str.c_str(), fontResource);
+	return gr_ttf_measureEx(str.c_str(), fontResource);
 }
 
 int GUISliderValue::Render(void)
diff --git a/gui/terminal.cpp b/gui/terminal.cpp
index 044782e..29b0e84 100644
--- a/gui/terminal.cpp
+++ b/gui/terminal.cpp
@@ -32,8 +32,8 @@
 
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
@@ -869,10 +869,10 @@
 		// render cursor
 		int cursorX = engine->getCursorX();
 		std::string leftOfCursor = line.substr(0, cursorX);
-		int x = gr_measureEx(leftOfCursor.c_str(), mFont->GetResource());
+		int x = gr_ttf_measureEx(leftOfCursor.c_str(), mFont->GetResource());
 		// note that this single character can be a UTF-8 sequence
 		std::string atCursor = (size_t)cursorX < line.length() ? line.substr(cursorX, 1) : " ";
-		int w = gr_measureEx(atCursor.c_str(), mFont->GetResource());
+		int w = gr_ttf_measureEx(atCursor.c_str(), mFont->GetResource());
 		gr_color(mFontColor.red, mFontColor.green, mFontColor.blue, mFontColor.alpha);
 		gr_fill(mRenderX + x, yPos, w, actualItemHeight);
 		gr_color(mBackgroundColor.red, mBackgroundColor.green, mBackgroundColor.blue, mBackgroundColor.alpha);
@@ -890,7 +890,7 @@
 	// make sure the shell is started
 	engine->initPty();
 	// send window resize
-	int charWidth = gr_measureEx("N", mFont->GetResource());
+	int charWidth = gr_ttf_measureEx("N", mFont->GetResource());
 	engine->setSize(mRenderW / charWidth, GetDisplayItemCount(), mRenderW, mRenderH);
 }
 
diff --git a/gui/text.cpp b/gui/text.cpp
index 9898e28..6498af6 100644
--- a/gui/text.cpp
+++ b/gui/text.cpp
@@ -19,8 +19,8 @@
 
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
@@ -47,6 +47,8 @@
 
 	// Load the font, and possibly override the color
 	mFont = LoadAttrFont(FindNode(node, "font"), "resource");
+	if (!mFont)
+		return;
 	mColor = LoadAttrColor(FindNode(node, "font"), "color", mColor);
 	mHighlightColor = LoadAttrColor(FindNode(node, "font"), "highlightcolor", mColor);
 
@@ -88,6 +90,8 @@
 	void* fontResource = NULL;
 	if (mFont)
 		fontResource = mFont->GetResource();
+	else
+		return -1;
 
 	mLastValue = gui_parse_text(mText);
 	string displayValue = mLastValue;
@@ -98,7 +102,7 @@
 	mVarChanged = 0;
 
 	int x = mRenderX, y = mRenderY;
-	int width = gr_measureEx(displayValue.c_str(), fontResource);
+	int width = gr_ttf_measureEx(displayValue.c_str(), fontResource);
 
 	if (isHighlighted)
 		gr_color(mHighlightColor.red, mHighlightColor.green, mHighlightColor.blue, mHighlightColor.alpha);
@@ -145,7 +149,7 @@
 
 	h = mFontHeight;
 	mLastValue = gui_parse_text(mText);
-	w = gr_measureEx(mLastValue.c_str(), fontResource);
+	w = gr_ttf_measureEx(mLastValue.c_str(), fontResource);
 	return 0;
 }
 
diff --git a/gui/textbox.cpp b/gui/textbox.cpp
index 277297f..2e2512c 100644
--- a/gui/textbox.cpp
+++ b/gui/textbox.cpp
@@ -22,8 +22,8 @@
 
 extern "C" {
 #include "../twcommon.h"
-#include "../minuitwrp/minui.h"
 }
+#include "../minuitwrp/minui.h"
 
 #include "rapidxml.hpp"
 #include "objects.hpp"
@@ -86,7 +86,7 @@
 
 	// render text
 	const char* text = rText[itemindex].c_str();
-	gr_textEx(mRenderX, yPos, text, mFont->GetResource());
+	gr_textEx_scaleW(mRenderX, yPos, text, mFont->GetResource(), mRenderW, TOP_LEFT, 0);
 }
 
 void GUITextBox::NotifySelect(size_t item_selected __unused)