App
Classes | Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
mhr.appcore.tools.brushlike.BrushLikeTool Class Reference

Abstraktní třída, který zapouzdřuje kreslení na kanvas štětcem. More...

Inheritance diagram for mhr.appcore.tools.brushlike.BrushLikeTool:
mhr.appcore.tools.Tool mhr.appcore.tools.brushlike.AlphaBrush mhr.appcore.tools.brushlike.Brush mhr.appcore.tools.brushlike.LUTBrush mhr.appcore.tools.brushlike.BrightnessLUTBrush mhr.appcore.tools.brushlike.ContrastLUTBrush mhr.appcore.tools.brushlike.CurvesLUTBrush mhr.appcore.tools.brushlike.GammaLUTBrush

Classes

enum  BrushMode
 Výčet určuje mód jednokanálového štětce. More...
 

Public Member Functions

 BrushLikeTool (NBitmap brush, BrushMode mode, double opacity, double flow, double spacing)
 Brush se nekopiruje, pouzije se reference, opacity je mozna spise vlastnost konkretni tridy nez abstraktni...
 
synchronized void dispose ()
 Slouží k uvolnění nativních prostředků při výměně nástroje.
 
void applyTo (Image img, ToolActionData data)
 Aplikuje nástroj na vybraný element obrazu, pokud nelze provést, hodí výjimku.
 
void bgnDraw (Image img, int atX, int atY)
 Zahájí kreslení na dané souřadnici, připravý
 
void drawTo (Image img, int toX, int toY)
 Nakreslí rovnou čáru od poslední souřadnice do zadané souřadnice.
 
void endDraw (Image img, int atX, int atY)
 Ukončí kreslení na dané souřadnici. Pokusí se nakreslit čáru na danou souřadnici a pak odešle canvas.
 
void onRender (Image img, NBitmap canvas, NBitmap tmpLayer, NBitmap origLayer, NBitmap masterMask, Rect src, int srcOrigX, int srcOrigY)
 Callback, který volá obraz v okamžiku, kdy je třeba renderovat část obrazu.
 
void onCommit (Image image, NBitmap canvas, NBitmap tmpLayer, NBitmap origLayer, NBitmap masterMask, Rect src, int srcOrigX, int srcOrigY)
 Callback, který volá obraz v okamžiku, kdy je kanvas odeslán k provedení finálních úprav.
 

Public Attributes

NBitmap brush
 hrot Štětce.
 
Rect brushRect
 Předpřipravený obdélník popisující hrot štětce.
 
int centerX
 Předpočítaný střed štětce.
 
int centerY
 Předpočítaný střed štětce.
 

Static Public Attributes

static final double flowAsFull = 0.9999
 
static final double flowAsNone = 0.0001
 

Protected Member Functions

void finalize () throws Throwable
 
void drawAt (Image img, NBitmap canvas, NBitmap mask, int atX, int atY)
 Nakreslí jeden otisk štětce na dané souřadnici.
 

Protected Attributes

int lastX
 Souřadnice bodu, kam se kreslilo naposledy.
 
int lastY
 Souřadnice bodu, kam se kreslilo naposledy.
 
double opacity
 Průhlednost kanvasu, její aplikace závisí až na konkrétní implementaci onRender a onCommit.
 
double flow
 Průhlednost štětce.
 
double spacing
 Spacing štětce. Jedná se o absolutní spacing v px!!!
 
BrushMode brushMode
 Mód štětce.
 
Rect maskRect
 Obdélník masky, je zde aby nemusel být předáván parametrem.
 

Detailed Description

Abstraktní třída, který zapouzdřuje kreslení na kanvas štětcem.

Třída zapouzdřuje kreslení na kanvas štětcem. Použije se jednokanálový kanvas a jednokanálový štětec s nastaveným flow, opacity a spacing. Také lze nastavit mód štětce. Odvozené třídy již jen kontrolují, jestli je nástroj aplikovatelný na daný element obrazu a přepisují onRender() a onCommit()

Definition at line 23 of file BrushLikeTool.java.

Constructor & Destructor Documentation

mhr.appcore.tools.brushlike.BrushLikeTool.BrushLikeTool ( NBitmap  brush,
BrushMode  mode,
double  opacity,
double  flow,
double  spacing 
)
inline

Brush se nekopiruje, pouzije se reference, opacity je mozna spise vlastnost konkretni tridy nez abstraktni...

Výchozí konstruktor, definuje vše potřebné pro fungování štětce.

Parameters
brushJednokanálová birmapa štětce pro kreslení na kanvas.
modeMód, ve kterém je bitmapa aplikována.
opacity
flow
spacing

Definition at line 51 of file BrushLikeTool.java.

{
BitmapInfo i = brush.getInfo();
if (i.channelCount != ChannelCount.SINGLE_CHANNEL) {
throw new IllegalArgumentException("Requires single channel bitmap.");
}
this.brush = brush;
this.brushMode = mode;
this.opacity = opacity;
this.flow = flow;
this.spacing = spacing;
}

Member Function Documentation

void mhr.appcore.tools.brushlike.BrushLikeTool.applyTo ( Image  img,
ToolActionData  data 
)
inline

Aplikuje nástroj na vybraný element obrazu, pokud nelze provést, hodí výjimku.

Parameters
imgObraz, na který je nástroj aplikován.
dataData určující akci, kterou má nástroj provést.
Exceptions
ToolNotApplicableException

Implements mhr.appcore.tools.Tool.

Definition at line 77 of file BrushLikeTool.java.

{
if (!(data instanceof BrushLikeToolActionData)) {
throw new IllegalArgumentException("Received data for different tool");
}
BrushLikeToolActionData d = (BrushLikeToolActionData) data;
switch (d.action) {
case DRAW_BEGIN:
bgnDraw(img, d.eventAtX, d.eventAtY);
break;
case DRAW_TO:
drawTo(img, d.eventAtX, d.eventAtY);
break;
case DRAW_END:
endDraw(img, d.eventAtX, d.eventAtY);
break;
}
}
void mhr.appcore.tools.brushlike.BrushLikeTool.bgnDraw ( Image  img,
int  atX,
int  atY 
)
inline

Zahájí kreslení na dané souřadnici, připravý

Parameters
imgObraz na který se kreslí.
atX
atY

Definition at line 130 of file BrushLikeTool.java.

{
NBitmap canvas = img.prepareCanvas(this, ChannelCount.SINGLE_CHANNEL);
NBitmap mask = null;
if (img.isMasterMaskActive()) {
mask = img.getMasterMask();
maskRect = mask.getRect();
}
drawAt(img, canvas, mask, atX, atY);
}
synchronized void mhr.appcore.tools.brushlike.BrushLikeTool.dispose ( )
inline

Slouží k uvolnění nativních prostředků při výměně nástroje.

Implements mhr.appcore.tools.Tool.

Definition at line 68 of file BrushLikeTool.java.

{
if (brush != null ) {
brush = null;
}
}
void mhr.appcore.tools.brushlike.BrushLikeTool.drawAt ( Image  img,
NBitmap  canvas,
NBitmap  mask,
int  atX,
int  atY 
)
inlineprotected

Nakreslí jeden otisk štětce na dané souřadnici.

Parameters
imgObraz, na který se kreslí.
canvasCanvas
maskmasterMask, pokud je použita, jinak null
atX
atY

Definition at line 180 of file BrushLikeTool.java.

{
lastX = atX;
lastY = atY;
if (flow > flowAsFull) {
if (brushMode == BrushMode.MODE_ADD) {
if (mask != null) {
Blender.addTo(canvas, mask, brush, maskRect, atX - centerX, atY - centerY, 0, 0);
} else {
Blender.addTo(canvas, brush, brushRect, atX - centerX, atY - centerY);
}
} else {
if (mask != null) {
Blender.removeFrom(canvas, mask, brush, maskRect, atX - centerX, atY - centerY, 0, 0);
} else {
Blender.removeFrom(canvas, brush, brushRect, atX - centerX, atY - centerY);
}
}
} else if (flow < flowAsNone) {
return;
} else {
if (brushMode == BrushMode.MODE_ADD) {
if (mask != null) {
Blender.addTo(canvas, mask, brush, maskRect, atX - centerX, atY - centerY, 0, 0, flow);
} else {
Blender.addTo(canvas, brush, brushRect, atX - centerX, atY - centerY, flow);
}
} else {
if (mask != null) {
Blender.removeFrom(canvas, mask, brush, maskRect, atX - centerX, atY - centerY, 0, 0, flow);
} else {
Blender.removeFrom(canvas, brush, brushRect, atX - centerX, atY - centerY, flow);
}
}
}
img.addCanvasChangedArea((new Rect(brushRect)).moveBy(atX - centerX, atY - centerY).cropBy(img.getRect()));
}
void mhr.appcore.tools.brushlike.BrushLikeTool.drawTo ( Image  img,
int  toX,
int  toY 
)
inline

Nakreslí rovnou čáru od poslední souřadnice do zadané souřadnice.

Parameters
imgObraz, na který se kreslí.
toX
toY

Definition at line 146 of file BrushLikeTool.java.

{
NBitmap canvas = img.getCanvas(this);
NBitmap mask = null;
if (img.isMasterMaskActive()) {
mask = img.getMasterMask();
maskRect = mask.getRect();
}
int[][] pts = LinearInt.interpolate(lastX, lastY, toX, toY, spacing);
for (int i = 1; i < pts[0].length; i++) {
drawAt(img, canvas, mask, pts[0][i], pts[1][i]);
}
}
void mhr.appcore.tools.brushlike.BrushLikeTool.endDraw ( Image  img,
int  atX,
int  atY 
)
inline

Ukončí kreslení na dané souřadnici. Pokusí se nakreslit čáru na danou souřadnici a pak odešle canvas.

Parameters
imgObraz, na který se kreslí.
atX
atY

Definition at line 165 of file BrushLikeTool.java.

{
NBitmap canvas = img.getCanvas(this);
NBitmap mask = (img.isMasterMaskActive()) ? img.getMasterMask() : null;
drawTo(img, atX, atY);
img.submitCanvas(this, true);
}
void mhr.appcore.tools.brushlike.BrushLikeTool.finalize ( ) throws Throwable
inlineprotected

Definition at line 118 of file BrushLikeTool.java.

{
super.finalize();
}
void mhr.appcore.tools.Tool.onCommit ( Image  image,
NBitmap  canvas,
NBitmap  tmpLayer,
NBitmap  origLayer,
NBitmap  masterMask,
Rect  src,
int  srcOrigX,
int  srcOrigY 
)
inherited

Callback, který volá obraz v okamžiku, kdy je kanvas odeslán k provedení finálních úprav.

Po nástroji je požadováno, aby implementoval tuto metodu tak, že v závislosti na stavu obrazu, canvasu, origLayer a masterMask upraví oblast src v origLayer. tmpLayer nebude již dále viditelná.

Parameters
imgObraz, na který je nástroj aplikován.
canvasKanvas, který si nástroj vytvořil a upravuje při volání applyTo
tmpLayerDočasná vrstva sloužící k náhledu úprav
origLayerPůvodní vrstva, kterou tmpLayer zastupuje.
masterMaskMaska výběru, pokud výběr není použitý je null.
srcOblast k přerenderování.
srcOrigX
srcOrigY

Implemented in mhr.appcore.tools.cancelable.filter.FilterCancelableTool, mhr.appcore.tools.cancelable.lut.LUTCancelableTool, mhr.appcore.tools.brushlike.AlphaBrush, mhr.appcore.tools.brushlike.Brush, mhr.appcore.tools.brushlike.LUTBrush, and mhr.appcore.tools.cancelable.LinearTransformationTool.

void mhr.appcore.tools.Tool.onRender ( Image  img,
NBitmap  canvas,
NBitmap  tmpLayer,
NBitmap  origLayer,
NBitmap  masterMask,
Rect  src,
int  srcOrigX,
int  srcOrigY 
)
inherited

Callback, který volá obraz v okamžiku, kdy je třeba renderovat část obrazu.

Po nástroji je požadováno, aby implementoval tuto metodu tak, že v závislosti na stavu obrazu, canvasu, origLayer a masterMask upraví oblast src v tmpLayer tak, že tmpLayer bude obsahovat náhled aplikace nástroje na origLayer.

Parameters
imgObraz, na který je nástroj aplikován.
canvasKanvas, který si nástroj vytvořil a upravuje při volání applyTo
tmpLayerDočasná vrstva sloužící k náhledu úprav
origLayerPůvodní vrstva, kterou tmpLayer zastupuje.
masterMaskMaska výběru, pokud výběr není použitý je null.
srcOblast k přerenderování.
srcOrigX
srcOrigY

Implemented in mhr.appcore.tools.cancelable.lut.LUTCancelableTool, mhr.appcore.tools.cancelable.filter.FilterCancelableTool, mhr.appcore.tools.brushlike.Brush, mhr.appcore.tools.brushlike.LUTBrush, mhr.appcore.tools.brushlike.AlphaBrush, and mhr.appcore.tools.cancelable.LinearTransformationTool.

Member Data Documentation

NBitmap mhr.appcore.tools.brushlike.BrushLikeTool.brush

hrot Štětce.

Definition at line 105 of file BrushLikeTool.java.

BrushMode mhr.appcore.tools.brushlike.BrushLikeTool.brushMode
protected

Mód štětce.

Definition at line 110 of file BrushLikeTool.java.

Rect mhr.appcore.tools.brushlike.BrushLikeTool.brushRect

Předpřipravený obdélník popisující hrot štětce.

Definition at line 106 of file BrushLikeTool.java.

int mhr.appcore.tools.brushlike.BrushLikeTool.centerX

Předpočítaný střed štětce.

Definition at line 107 of file BrushLikeTool.java.

int mhr.appcore.tools.brushlike.BrushLikeTool.centerY

Předpočítaný střed štětce.

Definition at line 108 of file BrushLikeTool.java.

double mhr.appcore.tools.brushlike.BrushLikeTool.flow
protected

Průhlednost štětce.

Definition at line 103 of file BrushLikeTool.java.

final double mhr.appcore.tools.brushlike.BrushLikeTool.flowAsFull = 0.9999
static

Definition at line 36 of file BrushLikeTool.java.

final double mhr.appcore.tools.brushlike.BrushLikeTool.flowAsNone = 0.0001
static

Definition at line 38 of file BrushLikeTool.java.

int mhr.appcore.tools.brushlike.BrushLikeTool.lastX
protected

Souřadnice bodu, kam se kreslilo naposledy.

Definition at line 99 of file BrushLikeTool.java.

int mhr.appcore.tools.brushlike.BrushLikeTool.lastY
protected

Souřadnice bodu, kam se kreslilo naposledy.

Definition at line 100 of file BrushLikeTool.java.

Rect mhr.appcore.tools.brushlike.BrushLikeTool.maskRect
protected

Obdélník masky, je zde aby nemusel být předáván parametrem.

Definition at line 112 of file BrushLikeTool.java.

double mhr.appcore.tools.brushlike.BrushLikeTool.opacity
protected

Průhlednost kanvasu, její aplikace závisí až na konkrétní implementaci onRender a onCommit.

Definition at line 102 of file BrushLikeTool.java.

double mhr.appcore.tools.brushlike.BrushLikeTool.spacing
protected

Spacing štětce. Jedná se o absolutní spacing v px!!!

Definition at line 104 of file BrushLikeTool.java.


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