1f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin/*
2f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Copyright (C) 2010 The Android Open Source Project
3f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin *
4f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Licensed under the Apache License, Version 2.0 (the "License");
5f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * you may not use this file except in compliance with the License.
6f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * You may obtain a copy of the License at
7f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin *
8f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin *      http://www.apache.org/licenses/LICENSE-2.0
9f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin *
10f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Unless required by applicable law or agreed to in writing, software
11f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * distributed under the License is distributed on an "AS IS" BASIS,
12f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * See the License for the specific language governing permissions and
14f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * limitations under the License.
15f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin */
16f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
17a4eae1abb4f2547dfbda84301ee764ce35464881John Reckpackage com.android.gallery3d.glrenderer;
18f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
19f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.graphics.Bitmap;
20f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.graphics.Canvas;
21f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.text.Layout;
22f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.text.StaticLayout;
23f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.text.TextPaint;
24f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
25a4eae1abb4f2547dfbda84301ee764ce35464881John Reck
26f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin// MultiLineTexture is a texture shows the content of a specified String.
27f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin//
28f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin// To create a MultiLineTexture, use the newInstance() method and specify
29f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin// the String, the font size, and the color.
30f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linclass MultiLineTexture extends CanvasTexture {
31f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    private final Layout mLayout;
32f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
33f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    private MultiLineTexture(Layout layout) {
34f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        super(layout.getWidth(), layout.getHeight());
35f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        mLayout = layout;
36f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    }
37f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
38f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static MultiLineTexture newInstance(
399201679ed1c485767f2e334aa618bd733024af03Chih-Chung Chang            String text, int maxWidth, float textSize, int color,
409201679ed1c485767f2e334aa618bd733024af03Chih-Chung Chang            Layout.Alignment alignment) {
41f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        TextPaint paint = StringTexture.getDefaultPaint(textSize, color);
42f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        Layout layout = new StaticLayout(text, 0, text.length(), paint,
439201679ed1c485767f2e334aa618bd733024af03Chih-Chung Chang                maxWidth, alignment, 1, 0, true, null, 0);
44f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
45f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        return new MultiLineTexture(layout);
46f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    }
47f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
48f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    @Override
49f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    protected void onDraw(Canvas canvas, Bitmap backing) {
50f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        mLayout.draw(canvas);
51f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    }
52f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin}
53