App
Classes | Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
mhr.appandroid.views.MaskView Class Reference

Třída sloužící k zobrazování jendokanálových bitmap jako masek. Umožňuje nastavit zvětšení zobrazení, drawable pro masku a pozadí. More...

Inheritance diagram for mhr.appandroid.views.MaskView:

Classes

interface  OnMaskCanvasChangedListener
 Interface pro posluchače, který využívá BrushView k vykreslování masky. More...
 

Public Member Functions

 MaskView (Context context)
 
 MaskView (Context context, AttributeSet attrs)
 
 MaskView (Context context, AttributeSet attrs, int defStyle)
 
double getZoom ()
 Vrátí hodnotu zoomu.
 
void setZoom (double zoom)
 Nastaví Zoom, pokud je hodnota mimo dovolený rozsah, nastaví nejbližší možnou.
 
APDBitmap getMaskCanvas ()
 Vrátí instanci APDBitmap, který představuje canvas pro tento MaskView.
 
void setOnMaskCanvasChangedListener (OnMaskCanvasChangedListener listener)
 Nastaví posluchače, který bude informován o změnách rozměrů MaskView.
 
Paint getMaskViewBackground ()
 Vrátí instanci Paint, která se použije pro vyplnění pozadí View před vykreslením MaskCanvasu.
 
Paint getMaskViewForeground ()
 Vrátí instanci Paint, která se použije pro vykreslení masky.
 

Static Public Attributes

static final double minZoom = 0.001
 Minimální hodnota zvětšení, jakou může uživatel nastavit.
 
static final double maxZoom = 1000
 Maximální hodnota zvětšení, jakou může uživatel nastavit.
 

Protected Member Functions

void init ()
 Provede potřebné inicializace při vytvoření.
 
void onDetachedFromWindow ()
 V Voláno v okamžiku, kdy už MaskView není součástí okna.
 
void onAttachedToWindow ()
 
void onSizeChanged (int w, int h, int oldw, int oldh)
 Voláno v okamžiku, kdy MaskView dostane rozměry.
 
void onDraw (Canvas canvas)
 Provede vykreslení bitmapy.
 

Protected Attributes

double factor = 1
 Faktor, jakým se násobí velikost MaskView, aby se dostala velikost canvasu, je převrácená hodnota zoomu.
 
Rect dstRect = null
 Obdélník představující velikost MaskView, do tohoto obdélníku se převzorkuje a vykresluje mask.
 
APDBitmap mask = null
 Canvas představující vykreslovanou masku, je přidělován uživateli a ten do něj vykresluje.
 
OnMaskCanvasChangedListener listener = null
 Listener, který má být informován o změnách velikosti canvasu.
 
Paint background
 Paint, který je použit k překreslení pozadí před vykreslením masky.
 
Paint foreground
 Paint, kterým je kreslena maska.
 

Detailed Description

Třída sloužící k zobrazování jendokanálových bitmap jako masek. Umožňuje nastavit zvětšení zobrazení, drawable pro masku a pozadí.

Definition at line 21 of file MaskView.java.

Constructor & Destructor Documentation

mhr.appandroid.views.MaskView.MaskView ( Context  context)
inline

Definition at line 80 of file MaskView.java.

{
super(context);
init();
}
mhr.appandroid.views.MaskView.MaskView ( Context  context,
AttributeSet  attrs 
)
inline

Definition at line 85 of file MaskView.java.

{
super(context, attrs);
init();
}
mhr.appandroid.views.MaskView.MaskView ( Context  context,
AttributeSet  attrs,
int  defStyle 
)
inline

Definition at line 90 of file MaskView.java.

{
super(context, attrs, defStyle);
init();
}

Member Function Documentation

APDBitmap mhr.appandroid.views.MaskView.getMaskCanvas ( )
inline

Vrátí instanci APDBitmap, který představuje canvas pro tento MaskView.

Returns

Definition at line 141 of file MaskView.java.

{
return mask;
}
Paint mhr.appandroid.views.MaskView.getMaskViewBackground ( )
inline

Vrátí instanci Paint, která se použije pro vyplnění pozadí View před vykreslením MaskCanvasu.

Returns

Definition at line 157 of file MaskView.java.

{
return background;
}
Paint mhr.appandroid.views.MaskView.getMaskViewForeground ( )
inline

Vrátí instanci Paint, která se použije pro vykreslení masky.

Returns

Definition at line 165 of file MaskView.java.

{
return foreground;
}
double mhr.appandroid.views.MaskView.getZoom ( )
inline

Vrátí hodnotu zoomu.

Returns

Definition at line 103 of file MaskView.java.

{
return 1 / factor;
}
void mhr.appandroid.views.MaskView.init ( )
inlineprotected

Provede potřebné inicializace při vytvoření.

Definition at line 56 of file MaskView.java.

{
setLayerType(View.LAYER_TYPE_SOFTWARE, null); // Jinak se nacachuje a neví o nativní změně bitmapy...
// setDrawingCacheEnabled(false); Nestačí, stále je bitmapa pro vykreslování cachovaná v graf. kartě a změny na ní se nereflektují do vykreslování.
background = new Paint();
background.setColor(0xFFFFFFFF);
foreground = new Paint();
foreground.setColor(0xFF000000);
}
void mhr.appandroid.views.MaskView.onAttachedToWindow ( )
inlineprotected

Definition at line 75 of file MaskView.java.

{
setLayerType(View.LAYER_TYPE_SOFTWARE, null); // Jinak se nacachuje a neví o nativní změně bitmapy...
}
void mhr.appandroid.views.MaskView.onDetachedFromWindow ( )
inlineprotected

V Voláno v okamžiku, kdy už MaskView není součástí okna.

Definition at line 67 of file MaskView.java.

{
if (mask != null) {
mask.getBitmap().recycle(); // Prý není nutné, ale může jít o velké bitmapy.
mask = null;
}
}
void mhr.appandroid.views.MaskView.onDraw ( Canvas  canvas)
inlineprotected

Provede vykreslení bitmapy.

Definition at line 185 of file MaskView.java.

{
canvas.drawRect(dstRect, background);
if (mask == null ) {
mask = new APDBitmap(new BitmapInfo((int) (factor * getWidth()), (int) (factor * getHeight()), ChannelCount.SINGLE_CHANNEL, Depth.DEPTH_8_BIT, ColorMode.MONO, false));
if (listener != null) {
}
}
if (mask != null) { // Pravdepodobne neni nutne, ale extremni zoom by mohl zpusobit problemy...
canvas.drawBitmap(mask.getBitmap(), null, dstRect, foreground);
}
}
void mhr.appandroid.views.MaskView.onSizeChanged ( int  w,
int  h,
int  oldw,
int  oldh 
)
inlineprotected

Voláno v okamžiku, kdy MaskView dostane rozměry.

Definition at line 171 of file MaskView.java.

{
super.onSizeChanged(w, h, oldw, oldh);
dstRect = new Rect(0, 0, w, h);
if (mask != null) {
mask.getBitmap().recycle();
}
mask = new APDBitmap(new BitmapInfo((int) (factor * w), (int) (factor * h), ChannelCount.SINGLE_CHANNEL, Depth.DEPTH_8_BIT, ColorMode.MONO, false));
if (listener != null) {
}
}
void mhr.appandroid.views.MaskView.setOnMaskCanvasChangedListener ( OnMaskCanvasChangedListener  listener)
inline

Nastaví posluchače, který bude informován o změnách rozměrů MaskView.

Parameters
listener

Definition at line 149 of file MaskView.java.

{
}
void mhr.appandroid.views.MaskView.setZoom ( double  zoom)
inline

Nastaví Zoom, pokud je hodnota mimo dovolený rozsah, nastaví nejbližší možnou.

Parameters
zoom

Definition at line 111 of file MaskView.java.

{
if (zoom < minZoom) {
zoom = minZoom;
} else if (zoom > maxZoom) {
zoom = maxZoom;
}
zoom = 1 / zoom;
factor = zoom;
if (mask != null) {
mask.getBitmap().recycle(); // hazelo OutOfMemoryException, ikdyž android prý převedl bitmapy do heapu JVM a celkově nemá být nutnost volat recycle();
}
// Ošetřena minimální velikost, kdy při max. zoomu vznikala neplatná bitmapa.
int width = (int) (zoom * dstRect.width());
int height = (int) (zoom * dstRect.height());
if (width < 1) {
width = 1;
}
if (height < 1) {
height = 1;
}
mask = new APDBitmap(new BitmapInfo(width, height, ChannelCount.SINGLE_CHANNEL, Depth.DEPTH_8_BIT, ColorMode.MONO, false));
if (listener != null) {
}
}

Member Data Documentation

Paint mhr.appandroid.views.MaskView.background
protected

Paint, který je použit k překreslení pozadí před vykreslením masky.

Definition at line 44 of file MaskView.java.

Rect mhr.appandroid.views.MaskView.dstRect = null
protected

Obdélník představující velikost MaskView, do tohoto obdélníku se převzorkuje a vykresluje mask.

Definition at line 41 of file MaskView.java.

double mhr.appandroid.views.MaskView.factor = 1
protected

Faktor, jakým se násobí velikost MaskView, aby se dostala velikost canvasu, je převrácená hodnota zoomu.

Definition at line 40 of file MaskView.java.

Paint mhr.appandroid.views.MaskView.foreground
protected

Paint, kterým je kreslena maska.

Definition at line 45 of file MaskView.java.

OnMaskCanvasChangedListener mhr.appandroid.views.MaskView.listener = null
protected

Listener, který má být informován o změnách velikosti canvasu.

Definition at line 43 of file MaskView.java.

APDBitmap mhr.appandroid.views.MaskView.mask = null
protected

Canvas představující vykreslovanou masku, je přidělován uživateli a ten do něj vykresluje.

Definition at line 42 of file MaskView.java.

final double mhr.appandroid.views.MaskView.maxZoom = 1000
static

Maximální hodnota zvětšení, jakou může uživatel nastavit.

Definition at line 49 of file MaskView.java.

final double mhr.appandroid.views.MaskView.minZoom = 0.001
static

Minimální hodnota zvětšení, jakou může uživatel nastavit.

Definition at line 48 of file MaskView.java.


The documentation for this class was generated from the following file: