|
|
|
@ -14,7 +14,8 @@
@@ -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() {
@@ -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; |
|
|
|
|