芝麻web文件管理V1.00
编辑当前文件:/home2/sdektunc/www/cepali/mod/assign/feedback/editpdf/yui/src/editor/js/annotationpen.js
// 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
. /* global STROKEWEIGHT, ANNOTATIONCOLOUR */ /** * Provides an in browser PDF editor. * * @module moodle-assignfeedback_editpdf-editor */ /** * Class representing a pen. * * @namespace M.assignfeedback_editpdf * @class annotationpen * @extends M.assignfeedback_editpdf.annotation */ var ANNOTATIONPEN = function(config) { ANNOTATIONPEN.superclass.constructor.apply(this, [config]); }; ANNOTATIONPEN.NAME = "annotationpen"; ANNOTATIONPEN.ATTRS = {}; Y.extend(ANNOTATIONPEN, M.assignfeedback_editpdf.annotation, { /** * Draw a pen annotation * @protected * @method draw * @return M.assignfeedback_editpdf.drawable */ draw: function() { var drawable, shape, first, positions, xy; drawable = new M.assignfeedback_editpdf.drawable(this.editor); shape = this.editor.graphic.addShape({ type: Y.Path, fill: false, stroke: { weight: STROKEWEIGHT, color: ANNOTATIONCOLOUR[this.colour] } }); first = true; // Recreate the pen path array. positions = this.path.split(':'); // Redraw all the lines. Y.each(positions, function(position) { xy = position.split(','); if (first) { shape.moveTo(xy[0], xy[1]); first = false; } else { shape.lineTo(xy[0], xy[1]); } }, this); shape.end(); drawable.shapes.push(shape); this.drawable = drawable; return ANNOTATIONPEN.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, first; shape = this.editor.graphic.addShape({ type: Y.Path, fill: false, stroke: { weight: STROKEWEIGHT, color: ANNOTATIONCOLOUR[edit.annotationcolour] } }); first = true; // Recreate the pen path array. // Redraw all the lines. Y.each(edit.path, function(position) { if (first) { shape.moveTo(position.x, position.y); first = false; } else { shape.lineTo(position.x, position.y); } }, this); shape.end(); 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 pen bound is more than min width/height, else false. */ init_from_edit: function(edit) { var bounds = new M.assignfeedback_editpdf.rect(), pathlist = [], i = 0; // This will get the boundaries of all points in the path. bounds.bound(edit.path); for (i = 0; i < edit.path.length; i++) { pathlist.push(parseInt(edit.path[i].x, 10) + ',' + parseInt(edit.path[i].y, 10)); } this.gradeid = this.editor.get('gradeid'); this.pageno = this.editor.currentpage; this.x = bounds.x; this.y = bounds.y; this.endx = bounds.x + bounds.width; this.endy = bounds.y + bounds.height; this.colour = edit.annotationcolour; this.path = pathlist.join(':'); return (bounds.has_min_width() || bounds.has_min_height()); } }); M.assignfeedback_editpdf = M.assignfeedback_editpdf || {}; M.assignfeedback_editpdf.annotationpen = ANNOTATIONPEN;