Package kiyut.citra.canvas
Class FXCanvas
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- kiyut.citra.canvas.FXCanvas
-
- All Implemented Interfaces:
ImageObserver,MenuContainer,Serializable
public class FXCanvas extends JComponent
FXCanvas component which represents a blank rectangular area of the screen onto which the application can draw or from which the component can trap input events from the user. Note: this component capture Esc key to clear the selection if any- Author:
- Kiyut
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
-
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
-
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanbackgroundCheckerboardflag for checkerboard backgroundprotected StrokeborderStrokeborder Strokeprotected ColorcheckerColor1background checker color 1 for alphaprotected ColorcheckerColor2background checker color 2 for alphaprotected FXContextcontextcontextstatic StringFILTER_OP_PROPERTYIdentifies a change to filterOpprotected booleanfitSizethe fit size for this component.static StringIMAGE_FILE_PROPERTYIdentifies a change to image fileprotected Rectangle2DimageBoundsimageBoundsprotected booleanopenFileboolean indicate opening new Fileprotected FXRendererrendererFXRendererprotected ThreadrenderThreadrender threadprotected FXSelectionModelselectionModelselection modelprotected AffineTransformtransformthis canvas current transformprotected booleantransformValidflag for canvas current transform validitystatic StringZOOM_FACTOR_PROPERTYIdentifies a change to setZoomFactor factorprotected doublezoomFactorthe zoomFactor for this component.-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
Fields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
-
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
-
Constructor Summary
Constructors Constructor Description FXCanvas()Create new instance of FXCanvas
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddProgressListener(ProgressListener listener)Registers listener so that it will receive ProgressEvents when this component process the Image Filter Operation.voidapply()Replace the source Image with Rendered Imagevoidcrop(Area area)Crop Rendered Imagevoiddiscard()Discard the Rendered Imageprotected voidfireProgressCancelled()Notifies all listeners that have registered interest for notification on this event type.protected voidfireProgressCompleted()Notifies all listeners that have registered interest for notification on this event type.protected voidfireProgressFailed(Exception ex)Notifies all listeners that have registered interest for notification on this event type.protected voidfireProgressStarted()Notifies all listeners that have registered interest for notification on this event type.FXContextgetContext()Return FXContextBufferedImageOpgetFilterOp()Return current filterOpFilegetImageFile()Return FileBufferedImagegetRenderedImage()Return rendered imageFXSelectionModelgetSelectionModel()Return current selection modelBufferedImagegetSourceImage()Return source imageAffineTransformgetTransform()Return a copy of this canvas transform, incase the transform is modified externallydoublegetZoomFactor()Return Zoom FactorbooleanisBackgroundCheckerboard()Return true or falsebooleanisOpenFile()Return openFile status, the status is resetted at first render process.protected voidpaintCanvasBackground(Graphics2D g2d)paint backgroundprotected voidpaintCanvasBorder(Graphics2D g2d)voidpaintComponent(Graphics g)protected voidpaintImage(Graphics2D g2d)protected voidpaintTool(Graphics2D g2d)paint toolprotected voidprocessComponentEvent(ComponentEvent evt)voidremoveProgressListener(ProgressListener listener)Unregisters listener so that it will receive ProgressEvents when this component process the Image Filter Operation.voidrender()Render will notify the interested listener using the addProgressListener.voidsetBackgroundCheckerboard(boolean checkerboard)Set the background checkerboard true or falsevoidsetContext(FXContext context)Set ContextvoidsetFilterOp(BufferedImageOp filterOp)Set the filterOpvoidsetImageFile(File file, boolean open)set the Image FilevoidsetZoomFactor(double zoomFactor)set the Zoom Factorprotected voidupdateTransform()Update the transform-
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUI, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
-
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Field Detail
-
ZOOM_FACTOR_PROPERTY
public static final String ZOOM_FACTOR_PROPERTY
Identifies a change to setZoomFactor factor- See Also:
- Constant Field Values
-
IMAGE_FILE_PROPERTY
public static final String IMAGE_FILE_PROPERTY
Identifies a change to image file- See Also:
- Constant Field Values
-
FILTER_OP_PROPERTY
public static final String FILTER_OP_PROPERTY
Identifies a change to filterOp- See Also:
- Constant Field Values
-
zoomFactor
protected double zoomFactor
the zoomFactor for this component.
-
fitSize
protected boolean fitSize
the fit size for this component.
-
renderer
protected FXRenderer renderer
FXRenderer
-
context
protected FXContext context
context
-
transform
protected AffineTransform transform
this canvas current transform
-
imageBounds
protected Rectangle2D imageBounds
imageBounds
-
transformValid
protected boolean transformValid
flag for canvas current transform validity
-
backgroundCheckerboard
protected boolean backgroundCheckerboard
flag for checkerboard background
-
checkerColor1
protected Color checkerColor1
background checker color 1 for alpha
-
checkerColor2
protected Color checkerColor2
background checker color 2 for alpha
-
borderStroke
protected Stroke borderStroke
border Stroke
-
selectionModel
protected FXSelectionModel selectionModel
selection model
-
renderThread
protected Thread renderThread
render thread
-
openFile
protected boolean openFile
boolean indicate opening new File
-
-
Method Detail
-
paintComponent
public void paintComponent(Graphics g)
- Overrides:
paintComponentin classJComponent
-
paintCanvasBackground
protected void paintCanvasBackground(Graphics2D g2d)
paint background- Parameters:
g2d-Graphics2D
-
paintImage
protected void paintImage(Graphics2D g2d)
-
paintTool
protected void paintTool(Graphics2D g2d)
paint tool- Parameters:
g2d-Graphics2D
-
paintCanvasBorder
protected void paintCanvasBorder(Graphics2D g2d)
-
getSourceImage
public BufferedImage getSourceImage()
Return source image
-
getRenderedImage
public BufferedImage getRenderedImage()
Return rendered image
-
getTransform
public AffineTransform getTransform()
Return a copy of this canvas transform, incase the transform is modified externally- Returns:
- AffineTransform
-
setZoomFactor
public void setZoomFactor(double zoomFactor)
set the Zoom Factor- Parameters:
zoomFactor- the Zoom Factor- See Also:
getZoomFactor()
-
getZoomFactor
public double getZoomFactor()
Return Zoom Factor- Returns:
- Zoom Factor
- See Also:
setZoomFactor(double)
-
processComponentEvent
protected void processComponentEvent(ComponentEvent evt)
- Overrides:
processComponentEventin classComponent
-
updateTransform
protected void updateTransform()
Update the transform
-
setImageFile
public void setImageFile(File file, boolean open)
set the Image File- Parameters:
file- The File Imageopen- flag whether the image will be opened- See Also:
getImageFile()
-
getImageFile
public File getImageFile()
Return File- Returns:
- File
- See Also:
setImageFile(File,boolean)
-
isOpenFile
public boolean isOpenFile()
Return openFile status, the status is resetted at first render process.- Returns:
- true or false
-
setFilterOp
public void setFilterOp(BufferedImageOp filterOp)
Set the filterOp- Parameters:
filterOp- BufferedImageOp
-
getFilterOp
public BufferedImageOp getFilterOp()
Return current filterOp- Returns:
- BufferedImageOp
- See Also:
setFilterOp(BufferedImageOp)
-
setContext
public void setContext(FXContext context)
Set Context- Parameters:
context- FXContext- See Also:
getContext()
-
getContext
public FXContext getContext()
Return FXContext- Returns:
- FXContext
- See Also:
setContext(FXContext)
-
setBackgroundCheckerboard
public void setBackgroundCheckerboard(boolean checkerboard)
Set the background checkerboard true or false- Parameters:
checkerboard- true or false- See Also:
isBackgroundCheckerboard()
-
isBackgroundCheckerboard
public boolean isBackgroundCheckerboard()
Return true or false- Returns:
- true or false
- See Also:
setBackgroundCheckerboard(boolean)
-
getSelectionModel
public FXSelectionModel getSelectionModel()
Return current selection model- Returns:
FXSelectionModel
-
render
public void render()
Render will notify the interested listener using the addProgressListener. If there is a selected area, it will only render the selected area, otherwise the whole image. The rendering process is done in a thread.- See Also:
addProgressListener(ProgressListener)
-
apply
public void apply()
Replace the source Image with Rendered Image- See Also:
discard(),getSourceImage(),getRenderedImage()
-
discard
public void discard()
Discard the Rendered Image- See Also:
apply(),getSourceImage(),getRenderedImage()
-
crop
public void crop(Area area)
Crop Rendered Image- Parameters:
area- the specified area for cropping
-
addProgressListener
public void addProgressListener(ProgressListener listener)
Registers listener so that it will receive ProgressEvents when this component process the Image Filter Operation.- Parameters:
listener- the ProgressListener to register
-
removeProgressListener
public void removeProgressListener(ProgressListener listener)
Unregisters listener so that it will receive ProgressEvents when this component process the Image Filter Operation.- Parameters:
listener- the ProgressListener to unregister
-
fireProgressStarted
protected void fireProgressStarted()
Notifies all listeners that have registered interest for notification on this event type.
-
fireProgressCompleted
protected void fireProgressCompleted()
Notifies all listeners that have registered interest for notification on this event type.
-
fireProgressCancelled
protected void fireProgressCancelled()
Notifies all listeners that have registered interest for notification on this event type.
-
fireProgressFailed
protected void fireProgressFailed(Exception ex)
Notifies all listeners that have registered interest for notification on this event type.- Parameters:
ex- the Exception
-
-