Frequently Asked Question

Maintain the proportions of a stamp.
Last Updated 11 months ago

This article shows how to maintain the proportions of a stamp during the drawing (onTouchStamp) .

You have to use this edited method in stead of the original one of PDFReader class.

private boolean onTouchStamp(MotionEvent event)
   {
      if( m_status == STA_STAMP )
      {
         int len = 0;
         if( m_rects != null ) len = m_rects.length;
         int cur = 0;

         int prop = m_icon.getWidth() / m_icon.getHeight();

         switch(event.getActionMasked())
         {
         case MotionEvent.ACTION_DOWN:
            float rects[] = new float[len + 4];
            for( cur = 0; cur < len; cur++ )
               rects[cur] = m_rects[cur];
            len += 4;
            rects[cur + 0] = event.getX();
            rects[cur + 1] = event.getY();
            rects[cur + 2] = event.getX();
            rects[cur + 3] = event.getY();
            m_rects = rects;
            break;
         case MotionEvent.ACTION_MOVE:
            float deltaMoveX = event.getX() - m_rects[len - 2];
            float deltaMoveY = event.getY() - m_rects[len - 1];
            m_rects[len - 2] = (deltaMoveX > deltaMoveY) ? event.getX() : m_rects[len - 2] + deltaMoveY * prop;
            m_rects[len - 1] = (deltaMoveX < deltaMoveY) ? event.getY() : m_rects[len - 1] + deltaMoveX / prop;
            break;
         case MotionEvent.ACTION_UP:
         case MotionEvent.ACTION_CANCEL:
            float deltaCancelX = event.getX() - m_rects[len - 2];
            float deltaCancelY = event.getY() - m_rects[len - 1];

            m_rects[len - 2] = (deltaCancelX > deltaCancelY) ? event.getX() : m_rects[len - 2] + deltaCancelY * prop;
            m_rects[len - 1] = (deltaCancelX < deltaCancelY) ? event.getY() : m_rects[len - 1] + deltaCancelX / prop;
            break;
         }
         invalidate();
         return true;
      }
      return false;
   }


Loading ...