Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | 122x 122x 122x 122x 122x 122x 122x 122x 122x 1x | /**
* @author Antonio Raúl Guijarro Contreras <alu0101100494@ull.edu.es>
* @file Declaración de la clase Shape. Generalización de metodos y atributos de las
* figuras.
* @copyright Antonio Raúl Guijarro Contreras 2020
* @since 13.03.2020
*/
'use strinc'
/**
* Clase padre de las figuras. Almacena métodos para poder dibujar dentro de un canvas
* las figuras que hereden de él.
*/
class Shape {
/**
* @static Almacena todos los posibles bordes, es decir, si son redondeados,
* cuadrados o butt.
*/
static lineCap = {
butt: 'butt',
round: 'round',
square: 'square'
}
/**
* @static Almacena un conjunto de patrones para el stroke. Línea continua, discontinua con varias
* distancias y patrones de separación
*/
static dashLine = {
continuous: [],
discontinuousVeryShort: [1, 1],
discontinuousShort: [10, 10],
discontinuousLong: [20, 5],
discontinuousMediumDot: [15, 3, 3, 3],
discontinuousLong3Dot: [20, 3, 3, 3, 3, 3, 3, 3],
discontinuousLongShort: [12, 3, 3]
}
/**
* Constructor de la clase Shape.
* @param {string} color Color en formato CSS
* @class Shape
*/
constructor(color = 'black') {
this.lineCap = Shape.lineCap.square;
this.fillStyle = color;
this.strokeStyle = color;
this.strokeWidth = 1;
this.rotate = 0;
this.scale = [1, 1];
this.isDiscontinuous = false;
this.distanceDiscontinuous = [10 ,10];
}
/* istanbul ignore next */
/**
* Asienta los atributos de la figura para ser dibujada.
* @param {context} ctx Contexto del canvas.
*/
baseDraw(ctx) {
if (ctx != null) {
ctx.beginPath();
if (this.isDiscontinuous) {
ctx.setLineDash(this.distanceDiscontinuous);
} else {
ctx.setLineDash([0, 0]);
}
ctx.lineWidth = this.strokeWidth;
ctx.lineCap = this.lineCap;
ctx.fillStyle = this.fillStyle;
ctx.strokeStyle = this.strokeStyle;
ctx.rotate(this.rotate);
ctx.scale(...this.scale);
}
}
}
export default Shape; |