[Pkg-javascript-commits] [pdf.js] 05/157: Transform old implementation to new implementation of border styles
David Prévot
taffit at moszumanska.debian.org
Tue Aug 11 06:46:24 UTC 2015
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository pdf.js.
commit 9550c0018445a5a0304e0c9a1d508b4cf4d89a2c
Author: Tim van der Meij <timvandermeij at gmail.com>
Date: Thu Dec 25 20:44:16 2014 +0100
Transform old implementation to new implementation of border styles
---
src/core/annotation.js | 41 ++---------------------
src/display/annotation_helper.js | 70 +++++++++++++++++++++++++++++++++-------
2 files changed, 60 insertions(+), 51 deletions(-)
diff --git a/src/core/annotation.js b/src/core/annotation.js
index 725353e..6a4c610 100644
--- a/src/core/annotation.js
+++ b/src/core/annotation.js
@@ -102,45 +102,8 @@ var Annotation = (function AnnotationClosure() {
}
}
- // Some types of annotations have border style dict which has more
- // info than the border array
- if (dict.has('BS')) {
- var borderStyle = dict.get('BS');
- data.borderWidth = borderStyle.has('W') ? borderStyle.get('W') : 1;
- } else {
- var borderArray = dict.get('Border') || [0, 0, 1];
- data.borderWidth = borderArray[2] || 0;
-
- // TODO: implement proper support for annotations with line dash patterns.
- var dashArray = borderArray[3];
- if (data.borderWidth > 0 && dashArray) {
- if (!isArray(dashArray)) {
- // Ignore the border if dashArray is not actually an array,
- // this is consistent with the behaviour in Adobe Reader.
- data.borderWidth = 0;
- } else {
- var dashArrayLength = dashArray.length;
- if (dashArrayLength > 0) {
- // According to the PDF specification: the elements in a dashArray
- // shall be numbers that are nonnegative and not all equal to zero.
- var isInvalid = false;
- var numPositive = 0;
- for (var i = 0; i < dashArrayLength; i++) {
- var validNumber = (+dashArray[i] >= 0);
- if (!validNumber) {
- isInvalid = true;
- break;
- } else if (dashArray[i] > 0) {
- numPositive++;
- }
- }
- if (isInvalid || numPositive === 0) {
- data.borderWidth = 0;
- }
- }
- }
- }
- }
+ this.borderStyle = data.borderStyle = new AnnotationBorderStyle();
+ this.setBorderStyle(dict);
this.appearance = getDefaultAppearance(dict);
data.hasAppearance = !!this.appearance;
diff --git a/src/display/annotation_helper.js b/src/display/annotation_helper.js
index a64ee35..215c7c2 100644
--- a/src/display/annotation_helper.js
+++ b/src/display/annotation_helper.js
@@ -14,7 +14,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/* globals PDFJS, Util, AnnotationType */
+/* globals PDFJS, Util, AnnotationType, AnnotationBorderStyleType, warn,
+ CustomStyle */
'use strict';
@@ -50,19 +51,64 @@ var AnnotationUtils = (function AnnotationUtilsClosure() {
var width = item.rect[2] - item.rect[0];
var height = item.rect[3] - item.rect[1];
- var bWidth = item.borderWidth || 0;
- if (bWidth) {
- width = width - 2 * bWidth;
- height = height - 2 * bWidth;
- cstyle.borderWidth = bWidth + 'px';
- var color = item.color;
- if (drawBorder && color) {
- cstyle.borderStyle = 'solid';
- cstyle.borderColor = Util.makeCssRgb(Math.round(color[0] * 255),
- Math.round(color[1] * 255),
- Math.round(color[2] * 255));
+ // Border
+ if (item.borderStyle.width > 0) {
+ // Border width
+ container.style.borderWidth = item.borderStyle.width + 'px';
+ if (item.borderStyle.style !== AnnotationBorderStyleType.UNDERLINE) {
+ // Underline styles only have a bottom border, so we do not need
+ // to adjust for all borders. This yields a similar result as
+ // Adobe Acrobat/Reader.
+ width = width - 2 * item.borderStyle.width;
+ height = height - 2 * item.borderStyle.width;
+ }
+
+ // Horizontal and vertical border radius
+ var horizontalRadius = item.borderStyle.horizontalCornerRadius;
+ var verticalRadius = item.borderStyle.verticalCornerRadius;
+ if (horizontalRadius > 0 || verticalRadius > 0) {
+ var radius = horizontalRadius + 'px / ' + verticalRadius + 'px';
+ CustomStyle.setProp('borderRadius', container, radius);
+ }
+
+ // Border style
+ switch (item.borderStyle.style) {
+ case AnnotationBorderStyleType.SOLID:
+ container.style.borderStyle = 'solid';
+ break;
+
+ case AnnotationBorderStyleType.DASHED:
+ container.style.borderStyle = 'dashed';
+ break;
+
+ case AnnotationBorderStyleType.BEVELED:
+ warn('Unimplemented border style: beveled');
+ break;
+
+ case AnnotationBorderStyleType.INSET:
+ warn('Unimplemented border style: inset');
+ break;
+
+ case AnnotationBorderStyleType.UNDERLINE:
+ container.style.borderBottomStyle = 'solid';
+ break;
+
+ default:
+ break;
+ }
+
+ // Border color
+ if (item.color) {
+ container.style.borderColor =
+ Util.makeCssRgb(Math.round(item.color[0] * 255),
+ Math.round(item.color[1] * 255),
+ Math.round(item.color[2] * 255));
+ } else {
+ // Default color is black, but that's not obvious from the spec.
+ container.style.borderColor = 'rgb(0,0,0)';
}
}
+
cstyle.width = width + 'px';
cstyle.height = height + 'px';
return container;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/pdf.js.git
More information about the Pkg-javascript-commits
mailing list