123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- package com.poqop.document;
- import android.graphics.Canvas;
- import android.graphics.Color;
- import android.graphics.Paint;
- import android.graphics.RectF;
- import android.text.TextPaint;
- /**
- * 显示每页内容,分割线,和页数
- * @author Administrator
- */
- class Page {
- final int index;
- RectF bounds;
- private PageTreeNode node;
- private DocumentView documentView;
- private final TextPaint textPaint = textPaint();
- private final Paint fillPaint = fillPaint();
- private final Paint strokePaint = strokePaint();
- Page(DocumentView documentView, int index) {
- this.documentView = documentView;
- this.index = index;
- node = new PageTreeNode(documentView, new RectF(0, 0, 1, 1), this, 1, null);
- }
- private float aspectRatio;
-
- float getPageHeight(int mainWidth, float zoom) {
- return mainWidth / getAspectRatio() * zoom;
- }
- public int getTop() {
- return Math.round(bounds.top);
- }
- public void draw(Canvas canvas) {
- if (!isVisible()) {
- return;
- }
- canvas.drawRect(bounds, fillPaint);
- //渲染文本
- canvas.drawText("Page " + (index + 1), bounds.centerX(), bounds.centerY(), textPaint); //pagenumber
- node.draw(canvas);
- //画线
- canvas.drawLine(bounds.left, bounds.top, bounds.right, bounds.top, strokePaint);
- canvas.drawLine(bounds.left, bounds.bottom, bounds.right, bounds.bottom, strokePaint);
- }
- private Paint strokePaint() {
- final Paint strokePaint = new Paint();
- strokePaint.setColor(Color.BLACK);
- strokePaint.setStyle(Paint.Style.STROKE);
- strokePaint.setStrokeWidth(10);
- return strokePaint;
- }
- private Paint fillPaint() {
- final Paint fillPaint = new Paint();
- fillPaint.setColor(Color.GRAY);
- fillPaint.setStyle(Paint.Style.FILL);
- return fillPaint;
- }
- private TextPaint textPaint() {
- final TextPaint paint = new TextPaint();
- paint.setColor(Color.BLACK);
- paint.setAntiAlias(true);
- paint.setTextSize(50);
- paint.setTextAlign(Paint.Align.CENTER);
- return paint;
- }
- public float getAspectRatio() {
- return aspectRatio;
- }
- public void setAspectRatio(float aspectRatio) {
- if (this.aspectRatio != aspectRatio) {
- this.aspectRatio = aspectRatio;
- documentView.invalidatePageSizes();
- }
- }
- public boolean isVisible() {
- return RectF.intersects(documentView.getViewRect(), bounds);
- }
- public void setAspectRatio(int width, int height) {
- setAspectRatio(width * 1.0f / height);
- }
- void setBounds(RectF pageBounds) {
- bounds = pageBounds;
- node.invalidateNodeBounds();
- }
- public void updateVisibility() {
- node.updateVisibility();
- }
- public void invalidate() {
- node.invalidate();
- }
- }
|