< prev index next >
modules/javafx.graphics/src/main/java/javafx/scene/canvas/GraphicsContext.java
Print this page
*** 125,135 ****
* <td class="colLast" style="width:10%; text-align:center">{@code Identity}</td>
* <td class="colLast">
* A 3x2 2D affine transformation matrix that controls how coordinates are
* mapped onto the logical pixels of the canvas image.
* </td></tr>
! * <tr class="altColor">
* <th scope="row" class="colLast" style="width:15%">{@link #setEffect(javafx.scene.effect.Effect) Effect}</th>
* <td class="colLast" style="width:10%; text-align:center; color:#0c0">Yes</td>
* <td class="colLast" style="width:10%; text-align:center">{@code null}</td>
* <td class="colLast">
* An {@link Effect} applied individually to each rendering operation.
--- 125,135 ----
* <td class="colLast" style="width:10%; text-align:center">{@code Identity}</td>
* <td class="colLast">
* A 3x2 2D affine transformation matrix that controls how coordinates are
* mapped onto the logical pixels of the canvas image.
* </td></tr>
! * <tr class="rowColor">
* <th scope="row" class="colLast" style="width:15%">{@link #setEffect(javafx.scene.effect.Effect) Effect}</th>
* <td class="colLast" style="width:10%; text-align:center; color:#0c0">Yes</td>
* <td class="colLast" style="width:10%; text-align:center">{@code null}</td>
* <td class="colLast">
* An {@link Effect} applied individually to each rendering operation.
*** 249,366 ****
* <td class="colLast" style="width:10%; text-align:center">{@link FillRule#NON_ZERO NON_ZERO}</td>
* <td class="colLast">
* The method used to determine the interior of paths for a path fill or
* clip operation.
* </td></tr>
* </table>
* <p>
* <a id="attr-ops-table">
* The various rendering methods on the {@code GraphicsContext} use the
* following sets of rendering attributes:
* </a>
* <table class="overviewSummary" style="width:80%; margin-left:auto; margin-right:auto">
* <caption>Rendering Attributes Table</caption>
* <tr>
! * <th scope="col" class="colLast" style="width:25%">Method</th>
! * <th scope="col" class="colLast" style="width:15%; text-align:center"><a href="#comm-attr">Common Rendering Attributes</a></th>
! * <th scope="col" class="colLast" style="width:15%; text-align:center"><a href="#fill-attr">Fill Attributes</a></th>
! * <th scope="col" class="colLast" style="width:15%; text-align:center"><a href="#strk-attr">Stroke Attributes</a></th>
! * <th scope="col" class="colLast" style="width:15%; text-align:center"><a href="#text-attr">Text Attributes</a></th>
! * <th scope="col" class="colLast" style="width:15%; text-align:center"><a href="#path-attr">Path Attributes</a></th>
* </tr>
* <tr><th colspan="1" scope="row">Basic Shape Rendering</th></tr>
* <tr class="rowColor">
! * <th scope="row" class="colLast" style="width:25%">
* {@link #fillRect(double, double, double, double) fillRect()},
* {@link #fillRoundRect(double, double, double, double, double, double) fillRoundRect()},
* {@link #fillOval(double, double, double, double) fillOval()},
* {@link #fillArc(double, double, double, double, double, double, javafx.scene.shape.ArcType) fillArc()}
* </th>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
* </tr>
* <tr class="altColor">
! * <th scope="row" class="colLast" style="width:25%">
* {@link #strokeLine(double, double, double, double) strokeLine()},
* {@link #strokeRect(double, double, double, double) strokeRect()},
* {@link #strokeRoundRect(double, double, double, double, double, double) strokeRoundRect()},
* {@link #strokeOval(double, double, double, double) strokeOval()},
* {@link #strokeArc(double, double, double, double, double, double, javafx.scene.shape.ArcType) strokeArc()}
* </th>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
* </tr>
* <tr class="rowColor">
! * <th scope="row" class="colLast" style="width:25%">
* {@link #clearRect(double, double, double, double) clearRect()}
* </th>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes <a href="#base-fn-1">[1]</a></td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
* </tr>
* <tr class="altColor">
! * <th scope="row" class="colLast" style="width:25%">
* {@link #fillPolygon(double[], double[], int) fillPolygon()}
* </th>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes <a href="#base-fn-2">[2]</a></td>
* </tr>
* <tr class="rowColor">
! * <th scope="row" class="colLast" style="width:25%">
* {@link #strokePolygon(double[], double[], int) strokePolygon()},
* {@link #strokePolyline(double[], double[], int) strokePolyline()}
* </th>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
* </tr>
* <tr><th scope="row" colspan="6">
* <a id="base-fn-1">[1]</a> Only the Transform, Clip, and Effect apply to clearRect()<br>
* <a id="base-fn-2">[2]</a> Only the Fill Rule applies to fillPolygon(), the current path is left unchanged
* </th></tr>
* <tr><th colspan="1" scope="row">Text Rendering</th></tr>
* <tr class="rowColor">
! * <th scope="row" class="colLast" style="width:25%">
* {@link #fillText(java.lang.String, double, double) fillText()},
* {@link #fillText(java.lang.String, double, double, double) fillText(with maxWidth)}
* </th>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes <a href="#text-fn-3">[3]</a></td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
* </tr>
* <tr class="altColor">
! * <th scope="row" class="colLast" style="width:25%">
* {@link #strokeText(java.lang.String, double, double) strokeText()},
* {@link #strokeText(java.lang.String, double, double, double) strokeText(with maxWidth)}
* </th>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes <a href="#text-fn-3">[3]</a></td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
* </tr>
* <tr><th scope="row" colspan="6">
* <a id="text-fn-3">[3]</a> The Font Smoothing attribute only applies to filled text
* </th></tr>
* <tr><th colspan="1" scope="row">Path Rendering</th></tr>
* <tr class="rowColor">
! * <th scope="row" class="colLast" style="width:25%">
* {@link #beginPath() beginPath()},
* {@link #moveTo(double, double) moveTo()},
* {@link #lineTo(double, double) lineTo()},
* {@link #quadraticCurveTo(double, double, double, double) quadraticCurveTo()},
* {@link #bezierCurveTo(double, double, double, double, double, double) bezierCurveTo()},
--- 249,383 ----
* <td class="colLast" style="width:10%; text-align:center">{@link FillRule#NON_ZERO NON_ZERO}</td>
* <td class="colLast">
* The method used to determine the interior of paths for a path fill or
* clip operation.
* </td></tr>
+ * <tr><th colspan="3" scope="row"><a id="image-attr">Image Attributes</a></th></tr>
+ * <tr class="rowColor">
+ * <th scope="row" class="colLast" style="width:15%">{@link #setImageSmoothing(boolean) Image Smoothing}</th>
+ * <td class="colLast" style="width:10%; text-align:center; color:#0c0">Yes</td>
+ * <td class="colLast" style="width:10%; text-align:center">{@code true}</td>
+ * <td class="colLast">
+ * A boolean state which enables or disables image smoothing for
+ * {@link #drawImage(javafx.scene.image.Image, double, double) drawImage(all forms)}.
+ * </td></tr>
* </table>
* <p>
* <a id="attr-ops-table">
* The various rendering methods on the {@code GraphicsContext} use the
* following sets of rendering attributes:
* </a>
* <table class="overviewSummary" style="width:80%; margin-left:auto; margin-right:auto">
* <caption>Rendering Attributes Table</caption>
* <tr>
! * <th scope="col" class="colLast" style="width:22%">Method</th>
! * <th scope="col" class="colLast" style="width:13%; text-align:center"><a href="#comm-attr">Common Rendering Attributes</a></th>
! * <th scope="col" class="colLast" style="width:13%; text-align:center"><a href="#fill-attr">Fill Attributes</a></th>
! * <th scope="col" class="colLast" style="width:13%; text-align:center"><a href="#strk-attr">Stroke Attributes</a></th>
! * <th scope="col" class="colLast" style="width:13%; text-align:center"><a href="#text-attr">Text Attributes</a></th>
! * <th scope="col" class="colLast" style="width:13%; text-align:center"><a href="#path-attr">Path Attributes</a></th>
! * <th scope="col" class="colLast" style="width:13%; text-align:center"><a href="#image-attr">Image Attributes</a></th>
* </tr>
* <tr><th colspan="1" scope="row">Basic Shape Rendering</th></tr>
* <tr class="rowColor">
! * <th scope="row" class="colLast" style="width:22%">
* {@link #fillRect(double, double, double, double) fillRect()},
* {@link #fillRoundRect(double, double, double, double, double, double) fillRoundRect()},
* {@link #fillOval(double, double, double, double) fillOval()},
* {@link #fillArc(double, double, double, double, double, double, javafx.scene.shape.ArcType) fillArc()}
* </th>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
* </tr>
* <tr class="altColor">
! * <th scope="row" class="colLast" style="width:22%">
* {@link #strokeLine(double, double, double, double) strokeLine()},
* {@link #strokeRect(double, double, double, double) strokeRect()},
* {@link #strokeRoundRect(double, double, double, double, double, double) strokeRoundRect()},
* {@link #strokeOval(double, double, double, double) strokeOval()},
* {@link #strokeArc(double, double, double, double, double, double, javafx.scene.shape.ArcType) strokeArc()}
* </th>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
* </tr>
* <tr class="rowColor">
! * <th scope="row" class="colLast" style="width:22%">
* {@link #clearRect(double, double, double, double) clearRect()}
* </th>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes <a href="#base-fn-1">[1]</a></td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
* </tr>
* <tr class="altColor">
! * <th scope="row" class="colLast" style="width:22%">
* {@link #fillPolygon(double[], double[], int) fillPolygon()}
* </th>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes <a href="#base-fn-2">[2]</a></td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
* </tr>
* <tr class="rowColor">
! * <th scope="row" class="colLast" style="width:22%">
* {@link #strokePolygon(double[], double[], int) strokePolygon()},
* {@link #strokePolyline(double[], double[], int) strokePolyline()}
* </th>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
* </tr>
* <tr><th scope="row" colspan="6">
* <a id="base-fn-1">[1]</a> Only the Transform, Clip, and Effect apply to clearRect()<br>
* <a id="base-fn-2">[2]</a> Only the Fill Rule applies to fillPolygon(), the current path is left unchanged
* </th></tr>
* <tr><th colspan="1" scope="row">Text Rendering</th></tr>
* <tr class="rowColor">
! * <th scope="row" class="colLast" style="width:22%">
* {@link #fillText(java.lang.String, double, double) fillText()},
* {@link #fillText(java.lang.String, double, double, double) fillText(with maxWidth)}
* </th>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes <a href="#text-fn-3">[3]</a></td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
* </tr>
* <tr class="altColor">
! * <th scope="row" class="colLast" style="width:22%">
* {@link #strokeText(java.lang.String, double, double) strokeText()},
* {@link #strokeText(java.lang.String, double, double, double) strokeText(with maxWidth)}
* </th>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes <a href="#text-fn-3">[3]</a></td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
* </tr>
* <tr><th scope="row" colspan="6">
* <a id="text-fn-3">[3]</a> The Font Smoothing attribute only applies to filled text
* </th></tr>
* <tr><th colspan="1" scope="row">Path Rendering</th></tr>
* <tr class="rowColor">
! * <th scope="row" class="colLast" style="width:22%">
* {@link #beginPath() beginPath()},
* {@link #moveTo(double, double) moveTo()},
* {@link #lineTo(double, double) lineTo()},
* {@link #quadraticCurveTo(double, double, double, double) quadraticCurveTo()},
* {@link #bezierCurveTo(double, double, double, double, double, double) bezierCurveTo()},
*** 368,439 ****
* {@link #arcTo(double, double, double, double, double) arcTo()},
* {@link #appendSVGPath(java.lang.String) appendSVGPath()},
* {@link #closePath() closePath()},
* {@link #rect(double, double, double, double) rect()}
* </th>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes <a href="#path-fn-4">[4]</a></td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
* </tr>
* <tr class="altColor">
! * <th scope="row" class="colLast" style="width:25%">
* {@link #fill() fill()}
* </th>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes <a href="#path-fn-4">[4]</a></td>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes</td>
* </tr>
* <tr class="rowColor">
! * <th scope="row" class="colLast" style="width:25%">
* {@link #stroke() stroke()}
* </th>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes <a href="#path-fn-4">[4]</a></td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes <a href="#path-fn-5">[5]</a></td>
* </tr>
* <tr class="altColor">
! * <th scope="row" class="colLast" style="width:25%">
* {@link #clip() clip()}
* </th>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes</td>
* </tr>
* <tr><th scope="row" colspan="6">
* <a id="path-fn-4">[4]</a> Transform applied only during path construction<br>
* <a id="path-fn-5">[5]</a> Fill Rule only used for fill() and clip()
* </th></tr>
* <tr><th scope="row" colspan="1">Image Rendering</th></tr>
* <tr class="rowColor">
! * <th scope="row" class="colLast" style="width:25%">
* {@link #drawImage(javafx.scene.image.Image, double, double) drawImage(all forms)}
* </th>
! * <td class="colLast" style="width:15%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
* </tr>
* <tr><th scope="row" colspan="1">Miscellaneous</th></tr>
* <tr class="rowColor">
! * <th scope="row" class="colLast" style="width:25%">
* {@link #applyEffect(javafx.scene.effect.Effect) applyEffect()},
* {@link #getPixelWriter() PixelWriter methods}
* </th>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:15%; text-align:center; color:#c00">No</td>
* </tr>
* </table>
*
* <p>Example:</p>
*
--- 385,462 ----
* {@link #arcTo(double, double, double, double, double) arcTo()},
* {@link #appendSVGPath(java.lang.String) appendSVGPath()},
* {@link #closePath() closePath()},
* {@link #rect(double, double, double, double) rect()}
* </th>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes <a href="#path-fn-4">[4]</a></td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
* </tr>
* <tr class="altColor">
! * <th scope="row" class="colLast" style="width:22%">
* {@link #fill() fill()}
* </th>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes <a href="#path-fn-4">[4]</a></td>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
* </tr>
* <tr class="rowColor">
! * <th scope="row" class="colLast" style="width:22%">
* {@link #stroke() stroke()}
* </th>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes <a href="#path-fn-4">[4]</a></td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes <a href="#path-fn-5">[5]</a></td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
* </tr>
* <tr class="altColor">
! * <th scope="row" class="colLast" style="width:22%">
* {@link #clip() clip()}
* </th>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
* </tr>
* <tr><th scope="row" colspan="6">
* <a id="path-fn-4">[4]</a> Transform applied only during path construction<br>
* <a id="path-fn-5">[5]</a> Fill Rule only used for fill() and clip()
* </th></tr>
* <tr><th scope="row" colspan="1">Image Rendering</th></tr>
* <tr class="rowColor">
! * <th scope="row" class="colLast" style="width:22%">
* {@link #drawImage(javafx.scene.image.Image, double, double) drawImage(all forms)}
* </th>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#0c0">Yes</td>
* </tr>
* <tr><th scope="row" colspan="1">Miscellaneous</th></tr>
* <tr class="rowColor">
! * <th scope="row" class="colLast" style="width:22%">
* {@link #applyEffect(javafx.scene.effect.Effect) applyEffect()},
* {@link #getPixelWriter() PixelWriter methods}
* </th>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
! * <td class="colLast" style="width:13%; text-align:center; color:#c00">No</td>
* </tr>
* </table>
*
* <p>Example:</p>
*
*** 493,502 ****
--- 516,526 ----
FontSmoothingType fontsmoothing;
TextAlignment textalign;
VPos textbaseline;
Effect effect;
FillRule fillRule;
+ boolean imageSmoothing = true;
State() {
init();
}
*** 507,539 ****
1.0, StrokeLineCap.SQUARE, StrokeLineJoin.MITER, 10.0,
null, 0.0,
0,
Font.getDefault(), FontSmoothingType.GRAY,
TextAlignment.LEFT, VPos.BASELINE,
! null, FillRule.NON_ZERO);
}
State(State copy) {
set(copy.globalAlpha, copy.blendop,
new Affine2D(copy.transform),
copy.fill, copy.stroke,
copy.linewidth, copy.linecap, copy.linejoin, copy.miterlimit,
copy.dashes, copy.dashOffset,
copy.numClipPaths,
copy.font, copy.fontsmoothing, copy.textalign, copy.textbaseline,
! copy.effect, copy.fillRule);
}
final void set(double globalAlpha, BlendMode blendop,
Affine2D transform, Paint fill, Paint stroke,
double linewidth, StrokeLineCap linecap,
StrokeLineJoin linejoin, double miterlimit,
double dashes[], double dashOffset,
int numClipPaths,
Font font, FontSmoothingType smoothing,
TextAlignment align, VPos baseline,
! Effect effect, FillRule fillRule)
{
this.globalAlpha = globalAlpha;
this.blendop = blendop;
this.transform = transform;
this.fill = fill;
--- 531,563 ----
1.0, StrokeLineCap.SQUARE, StrokeLineJoin.MITER, 10.0,
null, 0.0,
0,
Font.getDefault(), FontSmoothingType.GRAY,
TextAlignment.LEFT, VPos.BASELINE,
! null, FillRule.NON_ZERO, true);
}
State(State copy) {
set(copy.globalAlpha, copy.blendop,
new Affine2D(copy.transform),
copy.fill, copy.stroke,
copy.linewidth, copy.linecap, copy.linejoin, copy.miterlimit,
copy.dashes, copy.dashOffset,
copy.numClipPaths,
copy.font, copy.fontsmoothing, copy.textalign, copy.textbaseline,
! copy.effect, copy.fillRule, copy.imageSmoothing);
}
final void set(double globalAlpha, BlendMode blendop,
Affine2D transform, Paint fill, Paint stroke,
double linewidth, StrokeLineCap linecap,
StrokeLineJoin linejoin, double miterlimit,
double dashes[], double dashOffset,
int numClipPaths,
Font font, FontSmoothingType smoothing,
TextAlignment align, VPos baseline,
! Effect effect, FillRule fillRule, boolean imageSmoothing)
{
this.globalAlpha = globalAlpha;
this.blendop = blendop;
this.transform = transform;
this.fill = fill;
*** 549,558 ****
--- 573,583 ----
this.fontsmoothing = smoothing;
this.textalign = align;
this.textbaseline = baseline;
this.effect = effect;
this.fillRule = fillRule;
+ this.imageSmoothing = imageSmoothing;
}
State copy() {
return new State(this);
}
*** 581,590 ****
--- 606,616 ----
ctx.setFont(font);
ctx.setFontSmoothingType(fontsmoothing);
ctx.setTextAlign(textalign);
ctx.setTextBaseline(textbaseline);
ctx.setEffect(effect);
+ ctx.setImageSmoothing(imageSmoothing);
}
}
private GrowableDataBuffer getBuffer() {
return theCanvas.getBuffer();
*** 1729,1738 ****
--- 1755,1801 ----
public FillRule getFillRule() {
return curState.fillRule;
}
/**
+ * Sets the image smoothing state.
+ * Image smoothing is an <a href="#image-attr">Image attribute</a>
+ * used to enable or disable image smoothing for
+ * {@link #drawImage(javafx.scene.image.Image, double, double) drawImage(all forms)}
+ * as specified in the <a href="#attr-ops-table">Rendering Attributes Table</a>.<br>
+ * If image smoothing is {@code true}, images will be scaled using a higher
+ * quality filtering when transforming or scaling the source image to fit
+ * in the destination rectangle.<br>
+ * If image smoothing is {@code false}, images will be scaled without filtering
+ * (or by using a lower quality filtering) when transforming or scaling the
+ * source image to fit in the destination rectangle.
+ *
+ * @defaultValue {@code true}
+ * @param imageSmoothing {@code true} to enable or {@code false} to disable smoothing
+ * @since 12
+ */
+ public void setImageSmoothing(boolean imageSmoothing) {
+ if (curState.imageSmoothing != imageSmoothing) {
+ curState.imageSmoothing = imageSmoothing;
+ GrowableDataBuffer buf = getBuffer();
+ buf.putByte(NGCanvas.IMAGE_SMOOTH);
+ buf.putBoolean(curState.imageSmoothing);
+ }
+ }
+
+ /**
+ * Gets the current image smoothing state.
+ *
+ * @defaultValue {@code true}
+ * @return image smoothing state
+ * @since 12
+ */
+ public boolean isImageSmoothing() {
+ return curState.imageSmoothing;
+ }
+
+ /**
* Resets the current path to empty.
* The default path is empty.
* The current path is a <a href="#path-attr">path attribute</a>
* used for any of the path methods as specified in the
* <a href="#attr-ops-table">Rendering Attributes Table</a>
*** 2590,2599 ****
--- 2653,2663 ----
* and height of the given image.
* A {@code null} image value or an image still in progress will be ignored.
* <p>
* This method will be affected by any of the
* <a href="#comm-attr">global common</a>
+ * or <a href="#image-attr">image</a>
* attributes as specified in the
* <a href="#attr-ops-table">Rendering Attributes Table</a>.
* </p>
*
* @param img the image to be drawn or null.
*** 2612,2621 ****
--- 2676,2686 ----
* Image is scaled to fit into the destination rectangle.
* A {@code null} image value or an image still in progress will be ignored.
* <p>
* This method will be affected by any of the
* <a href="#comm-attr">global common</a>
+ * or <a href="#image-attr">image</a>
* attributes as specified in the
* <a href="#attr-ops-table">Rendering Attributes Table</a>.
* </p>
*
* @param img the image to be drawn or null.
*** 2633,2642 ****
--- 2698,2708 ----
* destination rectangle of the Canvas.
* A {@code null} image value or an image still in progress will be ignored.
* <p>
* This method will be affected by any of the
* <a href="#comm-attr">global common</a>
+ * or <a href="#image-attr">image</a>
* attributes as specified in the
* <a href="#attr-ops-table">Rendering Attributes Table</a>.
* </p>
*
* @param img the image to be drawn or null.
< prev index next >