胡斌

refactor for patent

正在显示 1 个修改的文件 包含 61 行增加46 行删除
... ... @@ -389,23 +389,6 @@
}
last_ext_press = press;
}*/
function draw_ext_input(px, py, press) {
var x = px * ratio_x;
var y = py * ratio_y;
if(last_ext_press == 0 && press != 0){
onTouchDownEvent(x, y, press);
}
else if(press != 0) {
onTouchMoveEvent(x, y, press);
}
else if(last_ext_press !=0) {
onTouchUpEvent(x, y, press);
}
last_ext_press = press;
}
function Point(x , y, p) {
this.x = x;
this.y = y;
... ... @@ -413,7 +396,7 @@
}
var previousPoint, currentPoint;
var previousPoint = new Point(0,0,0), currentPoint= new Point(0,0,0);
var kWIDTH_MIN = 0.2;
var kWIDTH_MAX = 3.0;
//current width
... ... @@ -421,6 +404,28 @@
var rotate_degree = 0;
var pressure_level = 2048.0;
function draw_ext_input(px, py, press) {
if(press == 0) {
previousPoint.p = 0;
}
else {
currentPoint.x = Math.round( px * ratio_x);
currentPoint.y = Math.round( py * ratio_y);
currentPoint.p = press;
if(previousPoint.p == 0) {
draw_point(currentPoint);
}
else {
draw_line(currentPoint);
}
previousPoint.x = currentPoint.x;
previousPoint.y = currentPoint.y;
previousPoint.p = currentPoint.p;
}
}
$( function() {
$( "#line_width_slider" ).slider({
range: true,
... ... @@ -444,58 +449,68 @@
kWIDTH_MIN = strokeWidth / 3;
}
function draw_point(pt){
var line_width = (kWIDTH_MAX - kWIDTH_MIN)/pressure_level * pt.p + kWIDTH_MIN;
ctx.beginPath(); //Start path
ctx.arc(pt.x, pt.y, line_width, 0, Math.PI * 2, true); // Draw a point using the arc function of the canvas with a point structure.
ctx.fill();
}
function draw_line(pt) {
var x = previousPoint.x;
var y = previousPoint.y;
var p = previousPoint.p;
var stepx, stepy ,stepp;
var times = 1;
var dy = pt.y - previousPoint.y;
var dx = pt.x - previousPoint.x;
var dp = pt.p - previousPoint.p;
var abs_dy = Math.abs(dy);
var abs_dx = Math.abs(dx);
if(abs_dy < 1 && abs_dx <1) {
if(pt.p > p) {
p = pt.p;
if(abs_dy < 0.1 && abs_dx < 0.1) {
if(pt.p > previousPoint.p) {
draw_point(pt);
}
var line_width = (kWIDTH_MAX - kWIDTH_MIN)/pressure_level * p + kWIDTH_MIN;
ctx.beginPath(); //Start path
ctx.arc(x, y, line_width, 0, Math.PI * 2, true); // Draw a point using the arc function of the canvas with a point structure.
ctx.fill();
return;
}
else if(abs_dy <= 1 && abs_dx <=1) {
draw_point(pt);
return;
}
var stepx, stepy ,stepw;
var times = 0;
var w0 = (kWIDTH_MAX - kWIDTH_MIN)/pressure_level * previousPoint.p + kWIDTH_MIN;
var w1 = (kWIDTH_MAX - kWIDTH_MIN)/pressure_level * pt.p + kWIDTH_MIN;
var dw = w1 - w0;
if (abs_dy >= abs_dx) {
times += abs_dy;
stepx = dx * 1.0 / abs_dy;
stepy = 1.0;
stepp = dp * 1.0 / abs_dy;
if (previousPoint.y > pt.y) {
stepy *= -1;
}
stepy = dy / abs_dy;
stepw = dw * 1.0 / abs_dy;
}
else
{
times += abs_dx;
stepx = 1.0;
stepx = dx / abs_dx;
stepy = dy * 1.0 / abs_dx;
stepp = dp * 1.0 / abs_dx;
if (previousPoint.x > pt.x) {
stepx *= -1;
}
stepw = dw * 1.0 / abs_dx;
}
var x = previousPoint.x + stepx;
var y = previousPoint.y + stepy;
var w = w0 + stepw;
while (times > 0) {
times = times - 1;
var line_width = (kWIDTH_MAX - kWIDTH_MIN)/pressure_level * p + kWIDTH_MIN;
ctx.lineWidth = line_width;
ctx.lineWidth = w;
ctx.beginPath(); //Start path
ctx.arc(x, y, line_width, 0, Math.PI * 2, true); // Draw a point using the arc function of the canvas with a point structure.
ctx.arc(x, y, w, 0, Math.PI * 2, true); // Draw a point using the arc function of the canvas with a point structure.
ctx.fill();
x += stepx;
y += stepy;
p += stepp;
w += stepw;
}
}
... ...