commit
d50ae0fd4d
@ -1,5 +1,4 @@
|
||||
//From the desk of Frank P. Westlake; public domain.
|
||||
package jackpal.androidterm.shortcuts;
|
||||
package app.fpw.log;
|
||||
|
||||
import android.graphics. Bitmap;
|
||||
import android.graphics. Bitmap.Config;
|
||||
@ -15,26 +14,55 @@ public class TextIcon
|
||||
////////////////////////////////////////////////////////////
|
||||
public static Bitmap getTextIcon(String text, int color, int width, int height)
|
||||
{
|
||||
text=text.trim();
|
||||
Rect R=new Rect();
|
||||
Paint p=new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||
p.setShadowLayer(2, 10, 10, 0xFF000000);
|
||||
p.setColor(color);
|
||||
p.setSubpixelText(true);
|
||||
p.setTextSize(256);
|
||||
p.setTextAlign(Align.CENTER);
|
||||
p.getTextBounds(text, 0, text.length(), R);
|
||||
text= text. trim();
|
||||
String lines[]= text.split("\\s*\n\\s*");
|
||||
int nLines= lines.length;
|
||||
Rect R= new Rect();
|
||||
Paint p= new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||
p. setShadowLayer(2, 10, 10, 0xFF000000);
|
||||
p. setColor(color);
|
||||
p. setSubpixelText(true);
|
||||
p. setTextSize(256);
|
||||
p. setTextAlign(Align.CENTER);
|
||||
float HH[]= new float[nLines];
|
||||
float H= 0f;
|
||||
float W= 0f;
|
||||
for(int i=0; i<nLines; ++i)
|
||||
{
|
||||
p. getTextBounds(lines[i], 0, lines[i].length(), R);
|
||||
float h= Float.valueOf(Math.abs(R.top-R.bottom));
|
||||
float w= Float.valueOf(Math.abs(R.right-R.left));
|
||||
if(nLines>1) h+=0.1f*h; // Add space between lines.
|
||||
HH[i]= h;
|
||||
H+= h;
|
||||
if(w>W) W=w;
|
||||
}
|
||||
float f= ((float)width)*H/((float)height);
|
||||
int hBitmap= (int)H;
|
||||
int wBitmap= (int)W;
|
||||
if(W<f) {wBitmap=(int)FloatMath.ceil(f); hBitmap=(int)FloatMath.ceil(H);}
|
||||
else {wBitmap=(int)FloatMath.ceil(W); hBitmap=(int)FloatMath.ceil(height*wBitmap/width);}
|
||||
|
||||
float H=Float.valueOf(Math.abs(R.top-R.bottom));
|
||||
float W=Float.valueOf(Math.abs(R.right-R.left));
|
||||
Bitmap b= Bitmap.createBitmap(wBitmap, hBitmap, Config.ARGB_8888);
|
||||
b. setDensity(Bitmap.DENSITY_NONE);
|
||||
Canvas c= new Canvas(b);
|
||||
|
||||
float S=W<H?H:W;
|
||||
|
||||
Bitmap b=Bitmap.createBitmap((int)FloatMath.ceil(S), (int)FloatMath.ceil(S), Config.ARGB_8888);
|
||||
b.setDensity(Bitmap.DENSITY_NONE);
|
||||
Canvas c=new Canvas(b);
|
||||
c.drawText(text, (float)(b.getWidth()/2.0), (float)(b.getHeight()/2.0+H/2.0), p);
|
||||
return(Bitmap.createScaledBitmap(b, width, height, true));
|
||||
W=wBitmap/2f;
|
||||
float top= hBitmap/2f-H/2f+HH[0]/2f;
|
||||
for(int i=0; i<nLines; ++i)
|
||||
{
|
||||
top+= HH[i]/2f;
|
||||
c. drawText(lines[i], W, top, p);
|
||||
top+= HH[i]/2f;
|
||||
}
|
||||
return(
|
||||
Bitmap.createScaledBitmap(
|
||||
b
|
||||
, width
|
||||
, height
|
||||
, true
|
||||
)
|
||||
);
|
||||
}
|
||||
////////////////////////////////////////////////////////////
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user