package com.metaio.sdk;

import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Rect;
import android.hardware.Camera.CameraInfo;
import android.opengl.GLSurfaceView;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.Window;
import android.widget.FrameLayout.LayoutParams;
import com.metaio.sdk.jni.CameraVector;
import com.metaio.sdk.jni.ESCREEN_ROTATION;
import com.metaio.sdk.jni.IMetaioSDKCallback;
import com.metaio.sdk.jni.ImageCaptureComponentBase;
import com.metaio.sdk.jni.SystemInfo;
import com.metaio.sdk.jni.Vector2di;
import com.metaio.tools.Layout;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.concurrent.Semaphore;

@TargetApi(9)
public final class ImageCaptureComponentAndroid extends ImageCaptureComponentBase
{
  public static boolean isRunningOnUnity = false;
  private Activity mActivity;
  private CameraView mCameraView;
  private int mDisplayRotation;

  private ImageCaptureComponentAndroid(Activity paramActivity)
  {
    MetaioDebug.logPrivate(3, "ImageCaptureComponentAndroid context = " + paramActivity + " == 0x" + Integer.toHexString(System.identityHashCode(paramActivity)));
    this.mCameraView = null;
    this.mActivity = paramActivity;
    this.mDisplayRotation = -1;
  }

  private final void bringGUIToFront(View paramView)
  {
    if ((paramView instanceof ViewGroup))
    {
      ViewGroup localViewGroup = (ViewGroup)paramView;
      int i = localViewGroup.getChildCount();
      ArrayList localArrayList = new ArrayList();
      for (int j = 0; j < i; j++)
        localArrayList.add(localViewGroup.getChildAt(j));
      Iterator localIterator = localArrayList.iterator();
      while (localIterator.hasNext())
      {
        View localView = (View)localIterator.next();
        if ((!(localView instanceof CameraView)) && (!(localView instanceof MetaioSurfaceView)))
          localView.bringToFront();
        if ((localView instanceof GLSurfaceView))
          ((GLSurfaceView)localView).setZOrderMediaOverlay(true);
        if ((localView instanceof ViewGroup))
          bringGUIToFront(localView);
      }
    }
  }

  private static ImageCaptureComponentAndroid createImageCaptureComponentAndroid(Activity paramActivity)
  {
    MetaioDebug.logPrivate(3, "ImageCaptureComponentAndroid.createImageCaptureComponentAndroid");
    ImageCaptureComponentAndroid localImageCaptureComponentAndroid = new ImageCaptureComponentAndroid(paramActivity);
    MetaioDebug.logPrivate(3, "ImageCaptureComponentAndroid new component created: " + localImageCaptureComponentAndroid);
    if (localImageCaptureComponentAndroid == null)
    {
      MetaioDebug.log(6, "Failed to create capture component");
      return localImageCaptureComponentAndroid;
    }
    StringBuilder localStringBuilder = new StringBuilder().append("ImageCaptureComponentAndroid CPtr: ");
    Object[] arrayOfObject = new Object[1];
    arrayOfObject[0] = Long.valueOf(getCPtr(localImageCaptureComponentAndroid));
    MetaioDebug.logPrivate(3, String.format("0x%x", arrayOfObject));
    return localImageCaptureComponentAndroid;
  }

  private final FrameLayout.LayoutParams getLayoutParams()
  {
    if (this.mActivity.getResources().getConfiguration().orientation == 1);
    for (boolean bool = true; ; bool = false)
    {
      Rect localRect = new Rect();
      this.mActivity.getWindow().getDecorView().getWindowVisibleDisplayFrame(localRect);
      return Layout.getLayoutParams(this.mActivity, getCamera().getResolution(), localRect, true, bool);
    }
  }

  private boolean initializeCameraView(final com.metaio.sdk.jni.Camera paramCamera)
  {
    final boolean[] arrayOfBoolean = { true };
    final Semaphore localSemaphore = new Semaphore(0);
    Runnable local1 = new Runnable()
    {
      public void run()
      {
        try
        {
          MetaioDebug.logPrivate(3, "Creating new camera view: " + ImageCaptureComponentAndroid.this.mCameraView);
          ImageCaptureComponentAndroid.access$002(ImageCaptureComponentAndroid.this, new CameraView(ImageCaptureComponentAndroid.this.mActivity));
          ImageCaptureComponentAndroid.this.mCameraView.setZOrderMediaOverlay(false);
          MetaioDebug.logPrivate(3, "Initializing new camera view: " + ImageCaptureComponentAndroid.this.mCameraView);
          ImageCaptureComponentAndroid.this.mCameraView.initialize(ImageCaptureComponentAndroid.this, paramCamera);
          MetaioDebug.logPrivate(3, "Adding new camera view to the views' hierarchy: " + ImageCaptureComponentAndroid.this.mCameraView);
          ImageCaptureComponentAndroid.this.mActivity.addContentView(ImageCaptureComponentAndroid.this.mCameraView, new FrameLayout.LayoutParams(-1, -1));
          ImageCaptureComponentAndroid.this.bringGUIToFront(ImageCaptureComponentAndroid.this.mActivity.findViewById(16908290));
          MetaioDebug.logPrivate(3, "New camera view added to the views' hierarchy: " + ImageCaptureComponentAndroid.this.mCameraView);
          return;
        }
        catch (Exception localException)
        {
          MetaioDebug.logPrivate(6, "Error creating new camera view!");
          MetaioDebug.printStackTracePrivate(6, localException);
          ImageCaptureComponentAndroid.access$002(ImageCaptureComponentAndroid.this, null);
          arrayOfBoolean[0] = false;
          return;
        }
        finally
        {
          localSemaphore.release();
        }
      }
    };
    this.mActivity.runOnUiThread(local1);
    try
    {
      localSemaphore.acquire();
      return arrayOfBoolean[0];
    }
    catch (InterruptedException localInterruptedException)
    {
      while (true)
      {
        MetaioDebug.printStackTracePrivate(6, localInterruptedException);
        arrayOfBoolean[0] = false;
      }
    }
  }

  private static CameraVector listCameras(Context paramContext)
  {
    CameraVector localCameraVector = new CameraVector();
    Camera.CameraInfo localCameraInfo = new Camera.CameraInfo();
    int i = SystemInfo.getAvailableCPUCores();
    int j = 0;
    if (j < android.hardware.Camera.getNumberOfCameras())
    {
      android.hardware.Camera.getCameraInfo(j, localCameraInfo);
      com.metaio.sdk.jni.Camera localCamera = new com.metaio.sdk.jni.Camera();
      localCamera.setIndex(j);
      if (localCameraInfo.facing == 0)
      {
        localCamera.setFriendlyName("Android Camera Rear");
        localCamera.setFacing(com.metaio.sdk.jni.Camera.FACE_BACK);
        label76: if (i < 4)
          break label152;
        localCamera.setResolution(new Vector2di(960, 720));
        localCamera.setDownsample(2);
      }
      while (true)
      {
        localCameraVector.add(localCamera);
        j++;
        break;
        if (localCameraInfo.facing != 1)
          break label76;
        localCamera.setFriendlyName("Android Camera Front");
        localCamera.setFacing(com.metaio.sdk.jni.Camera.FACE_FRONT);
        localCamera.setFlip(com.metaio.sdk.jni.Camera.FLIP_HORIZONTAL);
        break label76;
        label152: if (i >= 2)
        {
          localCamera.setResolution(new Vector2di(640, 480));
          localCamera.setDownsample(2);
        }
      }
    }
    return localCameraVector;
  }

  private void removeCameraView(CameraView paramCameraView)
  {
    try
    {
      ViewParent localViewParent = paramCameraView.getParent();
      if ((localViewParent instanceof ViewGroup))
      {
        MetaioDebug.logPrivate(3, "Removing camera view from hierarchy");
        ((ViewGroup)localViewParent).removeView(paramCameraView);
      }
      return;
    }
    catch (Exception localException)
    {
      MetaioDebug.logPrivate(3, "Error removing camera view from hierarchy!");
      MetaioDebug.printStackTracePrivate(3, localException);
    }
  }

  // ERROR //
  private void updateCameraDisplayOrientation()
  {
    // Byte code:
    //   0: iconst_1
    //   1: istore_1
    //   2: aload_0
    //   3: getfield 61	com/metaio/sdk/ImageCaptureComponentAndroid:mCameraView	Lcom/metaio/sdk/CameraView;
    //   6: ifnonnull +4 -> 10
    //   9: return
    //   10: aload_0
    //   11: getfield 63	com/metaio/sdk/ImageCaptureComponentAndroid:mActivity	Landroid/app/Activity;
    //   14: invokevirtual 331	android/app/Activity:getWindowManager	()Landroid/view/WindowManager;
    //   17: invokeinterface 337 1 0
    //   22: invokevirtual 342	android/view/Display:getRotation	()I
    //   25: istore_2
    //   26: iload_2
    //   27: aload_0
    //   28: getfield 65	com/metaio/sdk/ImageCaptureComponentAndroid:mDisplayRotation	I
    //   31: if_icmpeq -22 -> 9
    //   34: aload_0
    //   35: iload_2
    //   36: putfield 65	com/metaio/sdk/ImageCaptureComponentAndroid:mDisplayRotation	I
    //   39: iconst_3
    //   40: new 25	java/lang/StringBuilder
    //   43: dup
    //   44: invokespecial 26	java/lang/StringBuilder:<init>	()V
    //   47: ldc_w 344
    //   50: invokevirtual 32	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   53: aload_0
    //   54: getfield 65	com/metaio/sdk/ImageCaptureComponentAndroid:mDisplayRotation	I
    //   57: invokevirtual 347	java/lang/StringBuilder:append	(I)Ljava/lang/StringBuilder;
    //   60: invokevirtual 53	java/lang/StringBuilder:toString	()Ljava/lang/String;
    //   63: invokestatic 59	com/metaio/sdk/MetaioDebug:logPrivate	(ILjava/lang/String;)V
    //   66: new 251	android/hardware/Camera$CameraInfo
    //   69: dup
    //   70: invokespecial 252	android/hardware/Camera$CameraInfo:<init>	()V
    //   73: astore_3
    //   74: aload_0
    //   75: invokevirtual 208	com/metaio/sdk/ImageCaptureComponentAndroid:getCamera	()Lcom/metaio/sdk/jni/Camera;
    //   78: invokevirtual 350	com/metaio/sdk/jni/Camera:getIndex	()I
    //   81: aload_3
    //   82: invokestatic 266	android/hardware/Camera:getCameraInfo	(ILandroid/hardware/Camera$CameraInfo;)V
    //   85: aload_3
    //   86: getfield 351	android/hardware/Camera$CameraInfo:orientation	I
    //   89: istore 6
    //   91: aload_3
    //   92: getfield 273	android/hardware/Camera$CameraInfo:facing	I
    //   95: istore 11
    //   97: iload 11
    //   99: iload_1
    //   100: if_icmpne +116 -> 216
    //   103: iconst_3
    //   104: new 25	java/lang/StringBuilder
    //   107: dup
    //   108: invokespecial 26	java/lang/StringBuilder:<init>	()V
    //   111: ldc_w 353
    //   114: invokevirtual 32	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   117: iload 6
    //   119: invokevirtual 347	java/lang/StringBuilder:append	(I)Ljava/lang/StringBuilder;
    //   122: invokevirtual 53	java/lang/StringBuilder:toString	()Ljava/lang/String;
    //   125: invokestatic 59	com/metaio/sdk/MetaioDebug:logPrivate	(ILjava/lang/String;)V
    //   128: aload_0
    //   129: getfield 65	com/metaio/sdk/ImageCaptureComponentAndroid:mDisplayRotation	I
    //   132: istore 7
    //   134: iconst_0
    //   135: istore 8
    //   137: iload 7
    //   139: tableswitch	default:+29 -> 168, 0:+29->168, 1:+97->236, 2:+104->243, 3:+112->251
    //   169: ifeq +90 -> 259
    //   172: sipush 360
    //   175: iload 6
    //   177: iload 8
    //   179: iadd
    //   180: sipush 360
    //   183: irem
    //   184: isub
    //   185: sipush 360
    //   188: irem
    //   189: istore 9
    //   191: aload_0
    //   192: getfield 61	com/metaio/sdk/ImageCaptureComponentAndroid:mCameraView	Lcom/metaio/sdk/CameraView;
    //   195: iload 9
    //   197: invokevirtual 356	com/metaio/sdk/CameraView:setDisplayOrientation	(I)V
    //   200: aload_0
    //   201: getfield 63	com/metaio/sdk/ImageCaptureComponentAndroid:mActivity	Landroid/app/Activity;
    //   204: new 358	com/metaio/sdk/ImageCaptureComponentAndroid$4
    //   207: dup
    //   208: aload_0
    //   209: invokespecial 361	com/metaio/sdk/ImageCaptureComponentAndroid$4:<init>	(Lcom/metaio/sdk/ImageCaptureComponentAndroid;)V
    //   212: invokevirtual 237	android/app/Activity:runOnUiThread	(Ljava/lang/Runnable;)V
    //   215: return
    //   216: iconst_0
    //   217: istore_1
    //   218: goto -115 -> 103
    //   221: astore 4
    //   223: bipush 90
    //   225: istore 5
    //   227: iload 5
    //   229: istore 6
    //   231: iconst_0
    //   232: istore_1
    //   233: goto -130 -> 103
    //   236: bipush 90
    //   238: istore 8
    //   240: goto -72 -> 168
    //   243: sipush 180
    //   246: istore 8
    //   248: goto -80 -> 168
    //   251: sipush 270
    //   254: istore 8
    //   256: goto -88 -> 168
    //   259: sipush 360
    //   262: iload 6
    //   264: iload 8
    //   266: isub
    //   267: iadd
    //   268: sipush 360
    //   271: irem
    //   272: istore 9
    //   274: goto -83 -> 191
    //   277: astore 10
    //   279: iload 6
    //   281: istore 5
    //   283: goto -56 -> 227
    //
    // Exception table:
    //   from	to	target	type
    //   66	91	221	java/lang/RuntimeException
    //   91	97	277	java/lang/RuntimeException
  }

  // ERROR //
  public boolean doneWithFrame(int paramInt, long paramLong)
  {
    // Byte code:
    //   0: aload_0
    //   1: invokevirtual 366	com/metaio/sdk/ImageCaptureComponentAndroid:lockDoneWithFrameMutex	()V
    //   4: aload_0
    //   5: iload_1
    //   6: lload_2
    //   7: invokespecial 368	com/metaio/sdk/jni/ImageCaptureComponentBase:doneWithFrame	(IJ)Z
    //   10: istore 5
    //   12: iload 5
    //   14: ifeq +11 -> 25
    //   17: aload_0
    //   18: getfield 61	com/metaio/sdk/ImageCaptureComponentAndroid:mCameraView	Lcom/metaio/sdk/CameraView;
    //   21: iload_1
    //   22: invokevirtual 370	com/metaio/sdk/CameraView:doneWithFrame	(I)V
    //   25: aload_0
    //   26: invokevirtual 373	com/metaio/sdk/ImageCaptureComponentAndroid:unlockDoneWithFrameMutex	()V
    //   29: iload 5
    //   31: ireturn
    //   32: astore 4
    //   34: aload_0
    //   35: invokevirtual 373	com/metaio/sdk/ImageCaptureComponentAndroid:unlockDoneWithFrameMutex	()V
    //   38: aload 4
    //   40: athrow
    //   41: astore 6
    //   43: goto -18 -> 25
    //
    // Exception table:
    //   from	to	target	type
    //   4	12	32	finally
    //   17	25	32	finally
    //   17	25	41	java/lang/Exception
  }

  public boolean initialize(com.metaio.sdk.jni.Camera paramCamera)
  {
    MetaioDebug.logPrivate(3, "ImageCaptureComponentAndroid.initialize index=" + paramCamera);
    boolean bool = initializeCameraView(paramCamera);
    MetaioDebug.logPrivate(3, "ImageCaptureComponentAndroid initialized: " + bool);
    if (!bool)
      return false;
    return super.initialize(paramCamera);
  }

  public boolean pause()
  {
    MetaioDebug.logPrivate(3, "ImageCaptureComponentAndroid.pause()");
    return stop();
  }

  public void release()
  {
    MetaioDebug.logPrivate(3, "ImageCaptureComponentAndroid released ");
  }

  public void requestImage(IMetaioSDKCallback paramIMetaioSDKCallback, File paramFile, int paramInt1, int paramInt2)
  {
    MetaioDebug.logPrivate(3, "ImageCaptureComponentAndroid.requestImage: " + paramInt1 + ", " + paramInt2);
    if (this.mCameraView != null)
    {
      this.mCameraView.setPictureCallback(paramIMetaioSDKCallback, paramFile, paramInt1, paramInt2);
      return;
    }
    MetaioDebug.logPrivate(6, "ImageCaptureComponentAndroid.requestImage: ERROR, no CameraView");
  }

  public boolean resume()
  {
    MetaioDebug.logPrivate(3, "ImageCaptureComponentAndroid.resume()");
    boolean bool = initializeCameraView(getCamera());
    MetaioDebug.logPrivate(3, "ImageCaptureComponentAndroid.start: initializeCameraView: " + bool);
    if (bool)
    {
      bool = start();
      setFaceDetectionEnabled(faceDetectionEnabled());
    }
    return bool;
  }

  public void setFaceDetectionEnabled(boolean paramBoolean)
  {
    super.setFaceDetectionEnabled(paramBoolean);
    MetaioDebug.logPrivate(3, "ImageCaptureComponentAndroid.setFaceDetectionEnabled: " + paramBoolean);
    try
    {
      this.mCameraView.enableRealTimeFaceDetection(paramBoolean);
      return;
    }
    catch (Exception localException)
    {
      MetaioDebug.logPrivate(6, "Error starting face detection!");
      MetaioDebug.printStackTracePrivate(6, localException);
    }
  }

  public void setFocusMode(int paramInt)
  {
    MetaioDebug.logPrivate(3, "ImageCaptureComponentAndroid.setFocusMode: " + paramInt);
    if (this.mCameraView != null)
      this.mCameraView.setFocusMode(paramInt);
  }

  public void setScreenRotation(ESCREEN_ROTATION paramESCREEN_ROTATION)
  {
    MetaioDebug.logPrivate(3, "ImageCaptureComponentAndroid.setScreenRotation: " + paramESCREEN_ROTATION);
    updateCameraDisplayOrientation();
    super.setScreenRotation(paramESCREEN_ROTATION);
  }

  public boolean start()
  {
    MetaioDebug.logPrivate(3, "ImageCaptureComponentAndroid.start()");
    try
    {
      this.mCameraView.enablePreviewCallback(true);
      updateCameraDisplayOrientation();
      return true;
    }
    catch (Exception localException)
    {
      MetaioDebug.log(6, "Error starting capture: " + localException.getMessage());
      MetaioDebug.printStackTracePrivate(6, localException);
    }
    return false;
  }

  public boolean stop()
  {
    try
    {
      MetaioDebug.logPrivate(3, "ImageCaptureComponentAndroid.stop: Unity:" + isRunningOnUnity);
      boolean bool = true;
      try
      {
        if (!isRunningOnUnity)
        {
          final Semaphore localSemaphore = new Semaphore(0);
          this.mActivity.runOnUiThread(new Runnable()
          {
            public void run()
            {
              try
              {
                ImageCaptureComponentAndroid.this.mCameraView.release();
                MetaioDebug.logPrivate(3, "Removing owned CameraView");
                ImageCaptureComponentAndroid.this.removeCameraView(ImageCaptureComponentAndroid.this.mCameraView);
                ImageCaptureComponentAndroid.access$002(ImageCaptureComponentAndroid.this, null);
                return;
              }
              finally
              {
                localSemaphore.release();
              }
            }
          });
          try
          {
            localSemaphore.acquire();
            this.mDisplayRotation = -1;
            return bool;
          }
          catch (InterruptedException localInterruptedException)
          {
            while (true)
              MetaioDebug.printStackTracePrivate(6, localInterruptedException);
          }
        }
      }
      catch (Exception localException)
      {
        while (true)
        {
          MetaioDebug.logPrivate(3, "ImageCaptureComponentAndroid.stop: " + localException.getMessage());
          MetaioDebug.printStackTracePrivate(3, localException);
          bool = false;
          continue;
          final CameraView localCameraView = this.mCameraView;
          this.mCameraView.release();
          this.mCameraView = null;
          MetaioDebug.logPrivate(3, "Removing owned CameraView");
          this.mActivity.runOnUiThread(new Runnable()
          {
            public void run()
            {
              ImageCaptureComponentAndroid.this.removeCameraView(localCameraView);
            }
          });
        }
      }
    }
    finally
    {
    }
  }
}

/* Location:           C:\Documents and Settings\Cesar Cabello Cea\Mis documentos\Downloads\apk-downloader\com.ikea.kompis-6_dex2jar.jar
 * Qualified Name:     com.metaio.sdk.ImageCaptureComponentAndroid
 * JD-Core Version:    0.6.2
 */