AutorÃa | Ultima modificación | Ver Log |
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Provides an in browser PDF editor.
*
* @module moodle-assignfeedback_editpdf-editor
*/
/**
* Class representing a highlight.
*
* @namespace M.assignfeedback_editpdf
* @class annotationhighlight
* @extends M.assignfeedback_editpdf.annotation
* @module moodle-assignfeedback_editpdf-editor
*/
var ANNOTATIONHIGHLIGHT = function(config) {
ANNOTATIONHIGHLIGHT.superclass.constructor.apply(this, [config]);
};
ANNOTATIONHIGHLIGHT.NAME = "annotationhighlight";
ANNOTATIONHIGHLIGHT.ATTRS = {};
Y.extend(ANNOTATIONHIGHLIGHT, M.assignfeedback_editpdf.annotation, {
/**
* Draw a highlight annotation
* @protected
* @method draw
* @return M.assignfeedback_editpdf.drawable
*/
draw: function() {
var drawable,
shape,
bounds,
highlightcolour;
drawable = new M.assignfeedback_editpdf.drawable(this.editor);
bounds = new M.assignfeedback_editpdf.rect();
bounds.bound([new M.assignfeedback_editpdf.point(this.x, this.y),
new M.assignfeedback_editpdf.point(this.endx, this.endy)]);
highlightcolour = ANNOTATIONCOLOUR[this.colour];
// Add an alpha channel to the rgb colour.
highlightcolour = highlightcolour.replace('rgb', 'rgba');
highlightcolour = highlightcolour.replace(')', ',0.5)');
shape = this.editor.graphic.addShape({
type: Y.Rect,
width: bounds.width,
height: bounds.height,
stroke: false,
fill: {
color: highlightcolour
},
x: bounds.x,
y: bounds.y
});
drawable.shapes.push(shape);
this.drawable = drawable;
return ANNOTATIONHIGHLIGHT.superclass.draw.apply(this);
},
/**
* Draw the in progress edit.
*
* @public
* @method draw_current_edit
* @param M.assignfeedback_editpdf.edit edit
*/
draw_current_edit: function(edit) {
var drawable = new M.assignfeedback_editpdf.drawable(this.editor),
shape,
bounds,
highlightcolour;
bounds = new M.assignfeedback_editpdf.rect();
bounds.bound([new M.assignfeedback_editpdf.point(edit.start.x, edit.start.y),
new M.assignfeedback_editpdf.point(edit.end.x, edit.end.y)]);
// Set min. width of highlight.
if (!bounds.has_min_width()) {
bounds.set_min_width();
}
highlightcolour = ANNOTATIONCOLOUR[edit.annotationcolour];
// Add an alpha channel to the rgb colour.
highlightcolour = highlightcolour.replace('rgb', 'rgba');
highlightcolour = highlightcolour.replace(')', ',0.5)');
// We will draw a box with the current background colour.
shape = this.editor.graphic.addShape({
type: Y.Rect,
width: bounds.width,
height: 20,
stroke: false,
fill: {
color: highlightcolour
},
x: bounds.x,
y: edit.start.y - 10
});
drawable.shapes.push(shape);
return drawable;
},
/**
* Promote the current edit to a real annotation.
*
* @public
* @method init_from_edit
* @param M.assignfeedback_editpdf.edit edit
* @return bool true if highlight bound is more than min width/height, else false.
*/
init_from_edit: function(edit) {
var bounds = new M.assignfeedback_editpdf.rect();
bounds.bound([edit.start, edit.end]);
this.gradeid = this.editor.get('gradeid');
this.pageno = this.editor.currentpage;
this.x = bounds.x;
this.y = edit.start.y - 10;
this.endx = bounds.x + bounds.width;
this.endy = edit.start.y + 10;
this.colour = edit.annotationcolour;
this.page = '';
return (bounds.has_min_width());
}
});
M.assignfeedback_editpdf = M.assignfeedback_editpdf || {};
M.assignfeedback_editpdf.annotationhighlight = ANNOTATIONHIGHLIGHT;