Advertisement
Guest User

Untitled

a guest
Sep 28th, 2012
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.98 KB | None | 0 0
  1. DrawHandler.java
  2.  
  3. public class DrawHandler {
  4.        
  5.         public Shape mCurrentShape;
  6.         public SHAPES SELECTED_SHAPE = SHAPES.FREEHAND;
  7.         public Paint mPaint;
  8.         public Paint undopaint[];
  9.         public Paint mErasePaint;
  10.         public Paint mCurrentPaint;
  11.         public Panel mPanel;
  12.         public Point mDownPoint;
  13.    
  14.         // static so it will note be destroyed during screen rotations etc..
  15.         private ArrayList<Path> GRAPHICOBJECTS;
  16.         private ArrayList<Path> undonePaths ;
  17.        // private ArrayList<Path> undonePaths ;
  18.  
  19.         private OnDrawListener mOnDrawListener;
  20.  
  21.         public interface OnDrawListener {
  22.               public void onDrawShape(Shape shape, Paint paint); // narišeš shape dokončno
  23.               public void onDrawShapeTemp(Shape shape, Paint paint); // narišeš shape, in ga potem ko je narisan, izbrišeš, če shape ni freehand
  24.               public void onDrawAll(ArrayList<Path>  paths, Paint paint);
  25.         }
  26.  
  27.      
  28.  
  29.         public DrawHandler() {
  30.                 initPaint();
  31.         }
  32.  
  33.         public void setOnDrawListener(OnDrawListener onDrawListener) {
  34.                 mOnDrawListener = onDrawListener;
  35.         }
  36.          
  37.          
  38.  
  39.         public Paint getPaint() {
  40.                 return mPaint;
  41.         }
  42.        
  43.         public Paint getErasePaint() {
  44.                 return mErasePaint;
  45.         }
  46.        
  47.         private void initPaint() {
  48.                
  49.                 GRAPHICOBJECTS = new ArrayList<Path>();
  50.                 undonePaths = new ArrayList<Path>();
  51.  
  52.                 mPaint = new Paint();
  53.                 mErasePaint=new Paint();
  54.  
  55.                 mPaint.setDither(true);
  56.                 mPaint.setColor(Color.rgb(100, 100, 100));
  57.                 mPaint.setStyle(Paint.Style.STROKE);
  58.                 mPaint.setStrokeJoin(Paint.Join.ROUND);
  59.                 mPaint.setStrokeCap(Paint.Cap.ROUND);
  60.                 mErasePaint.setDither(true);
  61.                 mErasePaint.setColor(Color.rgb(255, 255, 255));
  62.                 mErasePaint.setStyle(Paint.Style.STROKE);
  63.                 mErasePaint.setStrokeJoin(Paint.Join.ROUND);
  64.                 mErasePaint.setStrokeCap(Paint.Cap.ROUND);
  65.                 mErasePaint.setStrokeWidth(15);
  66.                 setBrushWidth(6);
  67.         }
  68.  
  69.         public void setColor(int color) {
  70.                 mPaint.setColor(color);
  71.                  
  72.         }
  73.  
  74.         public void setEraseColor(int barva) {
  75.                 mErasePaint.setColor(barva);
  76.         }
  77.        
  78.         public void setBrushWidth(int bwidth) {
  79.                 mPaint.setStrokeWidth(bwidth);
  80.               //  mErasePaint = new Paint(mPaint);
  81.                 //mErasePaint.setARGB(255, 255, 255, 255);
  82.         }
  83.  
  84.         public void setShape(SHAPES shape) {
  85.                 SELECTED_SHAPE = shape;
  86.         }
  87.      
  88.    
  89.        
  90.         public void handleTouchEvent(MotionEvent event) {
  91.                
  92.                 Point point = new Point(event.getX(), event.getY());
  93.                
  94.                 if(SELECTED_SHAPE == SHAPES.ERASE)
  95.                 {   mCurrentPaint = mErasePaint;
  96.                
  97.                 }
  98.                 else
  99.                         mCurrentPaint = mPaint;
  100.                
  101.                 switch(event.getAction()) {
  102.                 case MotionEvent.ACTION_DOWN:
  103.                         mDownPoint = point;
  104.                         break;
  105.                 case MotionEvent.ACTION_UP:
  106.                 case MotionEvent.ACTION_MOVE:
  107.                         setCurrentShape(SELECTED_SHAPE, point);
  108.                         if(mOnDrawListener != null) {
  109.                                 if(event.getAction() == MotionEvent.ACTION_MOVE) {
  110.                                         mOnDrawListener.onDrawShapeTemp(mCurrentShape, mCurrentPaint);
  111.                                 } else {
  112.                                         mOnDrawListener.onDrawShape(mCurrentShape, mCurrentPaint);
  113.                                 }
  114.                                  
  115.                         }
  116.                        
  117.                         break;
  118.                
  119.                 }
  120.                 if(event.getAction() == MotionEvent.ACTION_UP) {
  121.                         GRAPHICOBJECTS.add(mCurrentShape.getPath());
  122.                     //    undopaint.length;
  123.                         mCurrentShape = null;
  124.                 }
  125.                
  126.         }
  127.  
  128.         public void back() {
  129.             if(GRAPHICOBJECTS.size()>0)
  130.             {
  131.             //undonePaths.add(GRAPHICOBJECTS.size()-1,;
  132.             undonePaths.add(GRAPHICOBJECTS.remove(GRAPHICOBJECTS.size()-1));
  133.             // GRAPHICOBJECTS.addAll(undonePaths);
  134.             if(mOnDrawListener != null) {
  135.                 mOnDrawListener.onDrawAll( GRAPHICOBJECTS, mCurrentPaint);
  136.              //   mPanel.invalidate();
  137.     //  GRAPHICOBJECTS.remove(GRAPHICOBJECTS.size()-1);
  138.                                
  139.             //  mPanel.back();  
  140.             //invalidate();
  141.             }}
  142.             }
  143.  
  144.         public void next() {
  145.             // TODO Auto-generated method stub
  146.             if(undonePaths.size()>0)
  147.             {
  148.             GRAPHICOBJECTS.add(undonePaths.remove(undonePaths.size()-1));
  149.             // GRAPHICOBJECTS.addAll(undonePaths);
  150.             if(mOnDrawListener != null) {
  151.                 mOnDrawListener.onDrawAll( GRAPHICOBJECTS, mCurrentPaint);
  152.                 }}
  153.         }
  154.  
  155.  
  156. Panel.java
  157.  
  158.  
  159. public void onDrawAll(ArrayList<Path> paths, Paint paint) {
  160.     // TODO Auto-generated method stub
  161.      prepareBitmaps();
  162.      synchronized (mCanvas) {
  163.          mCanvas.drawARGB(255, 255, 255, 255); // "pobriši" vse
  164.          mCanvas.drawARGB(255, 255,255, 255); // "pobriši" vse
  165.           for(Path path : paths)
  166.               mCanvas.drawPath(path , paint);
  167.       }
  168.      // updateBitmap(tmpCanvas, tmpBitmap,paths, paint);
  169.      synchronized (mBitmap) {
  170.         // tmpCanvas.drawPath(paths, paint);
  171.          drawBitmap(mBitmap);
  172.  }
  173.      
  174. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement