1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-01-29 14:52:12 +01:00

AndroidGCS: Show some less shitty graphics for PFD

This commit is contained in:
James Cotton 2012-08-08 11:05:08 -05:00
parent 2e554ebf8e
commit ae36f39f1a
6 changed files with 4308 additions and 37 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -4,13 +4,9 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical" > android:orientation="vertical" >
<org.openpilot.androidgcs.CompassView <org.openpilot.androidgcs.AttitudeView
android:id="@+id/compass_view" android:id="@+id/attitude_view"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" /> android:layout_height="wrap_content" />
<org.openpilot.androidgcs.AttitudeView
android:id="@+id/attitude_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout> </LinearLayout>

View File

@ -24,14 +24,15 @@
package org.openpilot.androidgcs; package org.openpilot.androidgcs;
import android.content.Context; import android.content.Context;
import android.content.res.Resources;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.Paint; import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.View; import android.view.View;
public class AttitudeView extends View { public class AttitudeView extends View {
private Paint markerPaint;
public AttitudeView(Context context) { public AttitudeView(Context context) {
super(context); super(context);
initAttitudeView(); initAttitudeView();
@ -49,16 +50,10 @@ public class AttitudeView extends View {
protected void initAttitudeView() { protected void initAttitudeView() {
setFocusable(true); setFocusable(true);
circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
circlePaint.setColor(getResources().getColor(R.color.background_color));
circlePaint.setStrokeWidth(1);
circlePaint.setStyle(Paint.Style.FILL_AND_STROKE);
Resources r = this.getResources();
textPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
textPaint.setColor(r.getColor(R.color.text_color));
markerPaint = new Paint(Paint.ANTI_ALIAS_FLAG); markerPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
markerPaint.setColor(r.getColor(R.color.marker_color)); markerPaint.setColor(getContext().getResources().getColor(
R.color.marker_color));
} }
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
@ -85,28 +80,40 @@ public class AttitudeView extends View {
return result; return result;
} }
private double roll; private float roll;
public void setRoll(double roll) { public void setRoll(double roll) {
this.roll = roll; this.roll = (float) roll;
} postInvalidate();
private double pitch;
public void setPitch(double d) {
this.pitch = d;
} }
// Drawing related code private float pitch;
private Paint markerPaint; public void setPitch(double d) {
private Paint textPaint; this.pitch = (float) d;
private Paint circlePaint; postInvalidate();
}
@Override @Override
protected void onDraw(Canvas canvas) { protected void onDraw(Canvas canvas) {
int px = getMeasuredWidth() / 2;
int py = getMeasuredHeight() /2 ;
int radius = Math.min(px, py);
canvas.drawLine(px,py, (int) (px+radius * Math.cos(roll)), (int) (py + radius * Math.sin(roll)), markerPaint); final int PX = getMeasuredWidth() / 2;
canvas.drawLine(px,py, (int) (px+radius * Math.cos(pitch)), (int) (py + radius * Math.sin(pitch)), markerPaint); final int PY = getMeasuredHeight() / 2;
// TODO: Figure out why these magic numbers are needed to center it
final int WIDTH = 600;
final int HEIGHT = 600;
final int DEG_TO_PX = 10; // Magic number for how to scale pitch
canvas.save(0);
canvas.rotate(-roll, PX, PY);
canvas.translate(0, pitch * DEG_TO_PX);
Drawable horizon = getContext().getResources().getDrawable(
R.drawable.im_pfd_horizon);
// This puts the image at the center of the PFD canvas (after it was
// translated)
horizon.setBounds(-(WIDTH - PX) / 2, -(HEIGHT - PY) / 2, WIDTH, HEIGHT);
horizon.draw(canvas);
canvas.restore();
} }
} }

View File

@ -52,13 +52,14 @@ public class PFD extends ObjectManagerActivity {
pitch = obj.getField("Pitch").getDouble(); pitch = obj.getField("Pitch").getDouble();
roll = obj.getField("Roll").getDouble(); roll = obj.getField("Roll").getDouble();
CompassView compass = (CompassView) findViewById(R.id.compass_view); /*
compass.setBearing((int) heading); * CompassView compass = (CompassView) findViewById(R.id.compass_view);
compass.invalidate(); * compass.setBearing((int) heading); compass.invalidate();
*/
AttitudeView attitude = (AttitudeView) findViewById(R.id.attitude_view); AttitudeView attitude = (AttitudeView) findViewById(R.id.attitude_view);
attitude.setRoll(roll / 180 * Math.PI); attitude.setRoll(roll);
attitude.setPitch(pitch / 180 * Math.PI); attitude.setPitch(pitch);
attitude.invalidate(); attitude.invalidate();
} }

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB