Example #1
0
  /** @param canvas */
  private void drawAircraft(Canvas canvas) {
    mPaint.setShadowLayer(0, 0, 0, 0);
    mPaint.setColor(Color.WHITE);
    if (null != mAirplaneBitmap) {

      /*
       * Rotate and move to a panned location
       */
      mAirplaneBitmap
          .getTransform()
          .setRotate(
              (float) mGpsParams.getBearing(),
              mAirplaneBitmap.getWidth() / 2.f,
              mAirplaneBitmap.getHeight() / 2.f);

      mAirplaneBitmap
          .getTransform()
          .postTranslate(
              getWidth() / 2.f
                  - mAirplaneBitmap.getWidth() / 2.f
                  + mPan.getMoveX() * mScale.getScaleFactor(),
              getHeight() / 2.f
                  - mAirplaneBitmap.getHeight() / 2.f
                  + mPan.getMoveY() * mScale.getScaleCorrected());

      canvas.drawBitmap(mAirplaneBitmap.getBitmap(), mAirplaneBitmap.getTransform(), mPaint);
    }
  }
Example #2
0
  /** @param canvas */
  private void drawTiles(Canvas canvas) {
    mPaint.setShadowLayer(0, 0, 0, 0);

    if (null != mTiles) {

      for (int tilen = 0; tilen < mTiles.getTilesNum(); tilen++) {

        BitmapHolder tile = mTiles.getTile(tilen);

        /*
         * Scale, then move under the plane which is at center
         */
        boolean nochart = false;
        if (null == tile) {
          nochart = true;
        } else if (null == tile.getBitmap()) {
          nochart = true;
        }
        if (nochart) {
          continue;
        }

        /*
         * Pretty straightforward. Pan and draw individual tiles.
         */
        tile.getTransform().setScale(mScale.getScaleFactor(), mScale.getScaleCorrected());
        tile.getTransform()
            .postTranslate(
                getWidth() / 2.f
                    - BitmapHolder.WIDTH / 2.f * mScale.getScaleFactor()
                    + ((tilen % mTiles.getXTilesNum()) * BitmapHolder.WIDTH
                            - BitmapHolder.WIDTH * (int) (mTiles.getXTilesNum() / 2))
                        * mScale.getScaleFactor()
                    + mPan.getMoveX() * mScale.getScaleFactor()
                    + mPan.getTileMoveX() * BitmapHolder.WIDTH * mScale.getScaleFactor()
                    - (float) mMovement.getOffsetLongitude() * mScale.getScaleFactor(),
                getHeight() / 2.f
                    - BitmapHolder.HEIGHT / 2.f * mScale.getScaleCorrected()
                    + mPan.getMoveY() * mScale.getScaleCorrected()
                    + ((tilen / mTiles.getXTilesNum()) * BitmapHolder.HEIGHT
                            - BitmapHolder.HEIGHT * (int) (mTiles.getYTilesNum() / 2))
                        * mScale.getScaleCorrected()
                    + mPan.getTileMoveY() * BitmapHolder.HEIGHT * mScale.getScaleCorrected()
                    - (float) mMovement.getOffsetLatitude() * mScale.getScaleCorrected());

        Bitmap b = tile.getBitmap();
        if (null != b) {
          canvas.drawBitmap(b, tile.getTransform(), mPaint);
        }
      }
    }
  }
Example #3
0
 /* (non-Javadoc)
  * @see com.ds.avare.MultiTouchController.MultiTouchObjectCanvas#setPositionAndScale(java.lang.Object, com.ds.avare.MultiTouchController.PositionAndScale, com.ds.avare.MultiTouchController.PointInfo)
  */
 public boolean setPositionAndScale(
     Object obj, PositionAndScale newObjPosAndScale, PointInfo touchPoint) {
   touchPointChanged(touchPoint);
   if (false == mCurrTouchPoint.isMultiTouch()) {
     /*
      * Multi-touch is zoom, single touch is pan
      */
     if (mPan.setMove(newObjPosAndScale.getXOff(), newObjPosAndScale.getYOff())) {
       /*
        * Query when we have moved one tile. This will happen in background.
        */
       dbquery(true);
     }
   } else {
     /*
      * Clamp scaling.
      */
     mPoint = null; /* this is to not support mPoint distance when zooming */
     mScale.setScaleFactor(newObjPosAndScale.getScale());
   }
   tfrReset();
   invalidate();
   return true;
 }
Example #4
0
 /* (non-Javadoc)
  * @see com.ds.avare.MultiTouchController.MultiTouchObjectCanvas#getPositionAndScale(java.lang.Object, com.ds.avare.MultiTouchController.PositionAndScale)
  */
 public void getPositionAndScale(Object obj, PositionAndScale objPosAndScaleOut) {
   objPosAndScaleOut.set(
       mPan.getMoveX(), mPan.getMoveY(), true, mScale.getScaleFactor(), false, 0, 0, false, 0);
 }