|
@@ -1178,8 +1178,8 @@ void la_SaveEvent(SYSWINDOW hwnd, laEvent *e, int use_last_pos){
|
|
|
if(use_last_pos){ e->x=MAIN.evLastX; e->y=MAIN.evLastY; }
|
|
|
|
|
|
e->Pressure=MAIN.IsPen?(MAIN.PointerIsEraser?MAIN.EraserPressure:MAIN.StylusPressure):0.5f;
|
|
|
- e->AngleX=rad(MAIN.PointerIsEraser?MAIN.EraserAngleX:MAIN.StylusAngleX);
|
|
|
- e->AngleY=rad(MAIN.PointerIsEraser?MAIN.EraserAngleY:MAIN.StylusAngleY);
|
|
|
+ e->Orientation=MAIN.PointerIsEraser?MAIN.EraserOrientation:MAIN.StylusOrientation;
|
|
|
+ e->Deviation=rad(MAIN.PointerIsEraser?MAIN.EraserDeviation:MAIN.StylusDeviation);
|
|
|
e->IsEraser=MAIN.PointerIsEraser;
|
|
|
e->GoodPressure=MAIN.IsPen;
|
|
|
|
|
@@ -6668,8 +6668,13 @@ static void la_RecordWacomMotions(XIRawEvent *event)
|
|
|
//printf("root: x %d y %d\n", win_x_return, win_y_return);
|
|
|
|
|
|
if(XIMaskIsSet(event->valuators.mask, 2)){ if(IsStylus) MAIN.StylusPressure=valuator[2]/MAIN.StylusMaxPressure; else MAIN.EraserPressure=valuator[2]/MAIN.EraserMaxPressure; }
|
|
|
- if(XIMaskIsSet(event->valuators.mask, 3)){ if(IsStylus) MAIN.StylusAngleX=valuator[3]; else MAIN.EraserAngleX=valuator[3]; }
|
|
|
- if(XIMaskIsSet(event->valuators.mask, 4)){ if(IsStylus) MAIN.StylusAngleY=valuator[4]; else MAIN.EraserAngleY=valuator[4]; }
|
|
|
+ if(XIMaskIsSet(event->valuators.mask, 3) && XIMaskIsSet(event->valuators.mask, 4)){
|
|
|
+ real x=valuator[3],y=valuator[4];
|
|
|
+ real orientation=atan2(y,x); real deviation=sqrt(x*x+y*y);
|
|
|
+ printf("%f %f\n",orientation,deviation);
|
|
|
+ if(IsStylus){ MAIN.StylusOrientation=orientation;MAIN.StylusDeviation=deviation; }
|
|
|
+ else { MAIN.EraserOrientation=orientation;MAIN.EraserDeviation=deviation; }
|
|
|
+ }
|
|
|
|
|
|
MAIN.IsPen=1;
|
|
|
}
|
|
@@ -6715,7 +6720,8 @@ LRESULT CALLBACK LA_WindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
|
|
|
if (gpWTPacket((HCTX)lparam, wparam, &pkt)){
|
|
|
MAIN.StylusPressure = (real)pkt.pkNormalPressure/MAIN.WinTabMaxPenPressure;
|
|
|
real angle = (real)pkt.pkOrientation.orAzimuth / 3600*TNS_PI*2+TNS_PI/2;
|
|
|
- MAIN.StylusAngleX = cos(angle); MAIN.StylusAngleY = sin(angle);
|
|
|
+ MAIN.StylusOrientation = angle; MAIN.StylusDeviation=rad(90.0f-(real)pkt.pkOrientation.orAltitude/10.0f);
|
|
|
+ printf("%f %f\n",angle,MAIN.StylusDeviation);
|
|
|
MAIN.IsPen = 1; MAIN.PointerIsEraser=((pkt.pkStatus & TPS_INVERT)==TPS_INVERT);
|
|
|
}
|
|
|
break;
|