diff --git a/README.md b/README.md
index 760c118a..c40c4e65 100644
--- a/README.md
+++ b/README.md
@@ -294,7 +294,7 @@ Most camera parameters can be controlled through XML attributes or linked method
|[`cameraSessionType`](#camerasessiontype)|`setSessionType()`|`picture` `video`|`picture`|
|[`cameraFacing`](#camerafacing)|`setFacing()`|`back` `front`|`back`|
|[`cameraFlash`](#cameraflash)|`setFlash()`|`off` `on` `auto` `torch`|`off`|
-|[`cameraGrid`](#cameragrid)|`setGrid()`|`off` `grid3x3` `grid4x4` `phi`|`off`|
+|[`cameraGrid`](#cameragrid)|`setGrid()`|`off` `draw3x3` `draw4x4` `drawPhi`|`off`|
|[`cameraCropOutput`](#cameracropoutput)|`setCropOutput()`|`true` `false`|`false`|
|[`cameraJpegQuality`](#camerajpegquality)|`setJpegQuality()`|`0 <= n <= 100`|`100`|
|[`cameraVideoQuality`](#cameravideoquality)|`setVideoQuality()`|`max480p` `max720p` `max1080p` `max2160p` `highest` `lowest`|`max480p`|
@@ -328,21 +328,21 @@ cameraView.setFacing(Facing.FRONT);
Flash mode, either off, on, auto or *torch*.
```java
-cameraView.setFlash(CameraConstants.FLASH_OFF);
-cameraView.setFlash(CameraConstants.FLASH_ON);
-cameraView.setFlash(CameraConstants.FLASH_AUTO);
-cameraView.setFlash(CameraConstants.FLASH_TORCH);
+cameraView.setFlash(Flash.OFF);
+cameraView.setFlash(Flash.ON);
+cameraView.setFlash(Flash.AUTO);
+cameraView.setFlash(Flash.TORCH);
```
#### cameraGrid
-Lets you draw grids over the camera preview. Supported values are `off`, `grid3x3` and `grid4x4` for regular grids, and `phi` for a grid based on the golden ratio constant, often used in photography.
+Lets you draw grids over the camera preview. Supported values are `off`, `draw3x3` and `draw4x4` for regular grids, and `drawPhi` for a grid based on the golden ratio constant, often used in photography.
```java
-cameraView.setGrid(CameraConstants.GRID_OFF);
-cameraView.setGrid(CameraConstants.GRID_3X3);
-cameraView.setGrid(CameraConstants.GRID_4X4);
-cameraView.setGrid(CameraConstants.GRID_PHI);
+cameraView.setGrid(Grid.OFF);
+cameraView.setGrid(Grid.DRAW_3X3);
+cameraView.setGrid(Grid.DRAW_4X4);
+cameraView.setGrid(Grid.DRAW_PHI);
```
#### cameraCropOutput
diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraConstants.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraConstants.java
index 848c5e72..645a4dc0 100644
--- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraConstants.java
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraConstants.java
@@ -5,11 +5,6 @@ public class CameraConstants {
public static final int PERMISSION_REQUEST_CODE = 16;
- public static final int GRID_OFF = 0;
- public static final int GRID_3X3 = 1;
- public static final int GRID_4X4 = 2;
- public static final int GRID_PHI = 3;
-
public static final int SESSION_TYPE_PICTURE = 0;
public static final int SESSION_TYPE_VIDEO = 1;
@@ -30,13 +25,10 @@ public class CameraConstants {
static class Defaults {
- // TODO: Move to enum classes
-
static final int DEFAULT_VIDEO_QUALITY = VIDEO_QUALITY_480P;
static final int DEFAULT_WHITE_BALANCE = WHITE_BALANCE_AUTO;
static final int DEFAULT_SESSION_TYPE = SESSION_TYPE_PICTURE;
static final int DEFAULT_JPEG_QUALITY = 100;
- static final int DEFAULT_GRID = GRID_OFF;
static final boolean DEFAULT_CROP_OUTPUT = false;
diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java
index 31994183..ef022947 100644
--- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java
@@ -94,10 +94,10 @@ public class CameraView extends FrameLayout {
TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.CameraView, 0, 0);
Facing facing = Facing.fromValue(a.getInteger(R.styleable.CameraView_cameraFacing, Facing.DEFAULT.value()));
Flash flash = Flash.fromValue(a.getInteger(R.styleable.CameraView_cameraFlash, Flash.DEFAULT.value()));
+ Grid grid = Grid.fromValue(a.getInteger(R.styleable.CameraView_cameraGrid, Grid.DEFAULT.value()));
int sessionType = a.getInteger(R.styleable.CameraView_cameraSessionType, Defaults.DEFAULT_SESSION_TYPE);
int whiteBalance = a.getInteger(R.styleable.CameraView_cameraWhiteBalance, Defaults.DEFAULT_WHITE_BALANCE);
int videoQuality = a.getInteger(R.styleable.CameraView_cameraVideoQuality, Defaults.DEFAULT_VIDEO_QUALITY);
- int grid = a.getInteger(R.styleable.CameraView_cameraGrid, Defaults.DEFAULT_GRID);
mJpegQuality = a.getInteger(R.styleable.CameraView_cameraJpegQuality, Defaults.DEFAULT_JPEG_QUALITY);
mCropOutput = a.getBoolean(R.styleable.CameraView_cameraCropOutput, Defaults.DEFAULT_CROP_OUTPUT);
GestureAction tapGesture = GestureAction.fromValue(a.getInteger(R.styleable.CameraView_cameraGestureTap, GestureAction.DEFAULT_TAP.value()));
@@ -621,13 +621,14 @@ public class CameraView extends FrameLayout {
/**
* Controls the grids to be drawn over the current layout.
*
- * @see CameraConstants#GRID_OFF
- * @see CameraConstants#GRID_3X3
- * @see CameraConstants#GRID_4X4
+ * @see Grid#OFF
+ * @see Grid#DRAW_3X3
+ * @see Grid#DRAW_4X4
+ * @see Grid#DRAW_PHI
*
* @param gridMode desired grid mode
*/
- public void setGrid(@Grid int gridMode) {
+ public void setGrid(Grid gridMode) {
mGridLinesLayout.setGridMode(gridMode);
}
@@ -636,8 +637,7 @@ public class CameraView extends FrameLayout {
* Gets the current grid mode.
* @return the current grid mode
*/
- @Grid
- public int getGrid() {
+ public Grid getGrid() {
return mGridLinesLayout.getGridMode();
}
diff --git a/cameraview/src/main/options/com/otaliastudios/cameraview/Facing.java b/cameraview/src/main/options/com/otaliastudios/cameraview/Facing.java
index d20c9912..879a9b7c 100644
--- a/cameraview/src/main/options/com/otaliastudios/cameraview/Facing.java
+++ b/cameraview/src/main/options/com/otaliastudios/cameraview/Facing.java
@@ -4,7 +4,7 @@ package com.otaliastudios.cameraview;
/**
* Facing value indicates which camera sensor should be used for the current session.
*
- * @see CameraView#setFacing(int)
+ * @see CameraView#setFacing(Facing)
*/
public enum Facing {
diff --git a/cameraview/src/main/options/com/otaliastudios/cameraview/Flash.java b/cameraview/src/main/options/com/otaliastudios/cameraview/Flash.java
index 28d2a27f..9ef9c337 100644
--- a/cameraview/src/main/options/com/otaliastudios/cameraview/Flash.java
+++ b/cameraview/src/main/options/com/otaliastudios/cameraview/Flash.java
@@ -4,7 +4,7 @@ package com.otaliastudios.cameraview;
/**
* Flash value indicates the flash mode to be used.
*
- * @see CameraView#setFlash(int)
+ * @see CameraView#setFlash(Flash)
*/
public enum Flash {
diff --git a/cameraview/src/main/options/com/otaliastudios/cameraview/Grid.java b/cameraview/src/main/options/com/otaliastudios/cameraview/Grid.java
index 415a2ccc..6475da87 100644
--- a/cameraview/src/main/options/com/otaliastudios/cameraview/Grid.java
+++ b/cameraview/src/main/options/com/otaliastudios/cameraview/Grid.java
@@ -1,16 +1,54 @@
package com.otaliastudios.cameraview;
-import android.support.annotation.IntDef;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
+/**
+ * Grid values can be used to draw grid lines over the camera preview.
+ *
+ * @see CameraView#setGrid(Grid)
+ */
+public enum Grid {
-import static com.otaliastudios.cameraview.CameraConstants.GRID_OFF;
-import static com.otaliastudios.cameraview.CameraConstants.GRID_3X3;
-import static com.otaliastudios.cameraview.CameraConstants.GRID_4X4;
-import static com.otaliastudios.cameraview.CameraConstants.GRID_PHI;
-@IntDef({GRID_OFF, GRID_3X3, GRID_4X4, GRID_PHI})
-@Retention(RetentionPolicy.SOURCE)
-public @interface Grid {
+ /**
+ * No grid is drawn.
+ */
+ OFF(0),
+
+ /**
+ * Draws a regular, 3x3 grid.
+ */
+ DRAW_3X3(1),
+
+ /**
+ * Draws a regular, 4x4 grid.
+ */
+ DRAW_4X4(2),
+
+ /**
+ * Draws a grid respecting the 'phi' constant proportions,
+ * often referred as to the golden ratio.
+ */
+ DRAW_PHI(3);
+
+ static final Grid DEFAULT = OFF;
+
+ private int value;
+
+ Grid(int value) {
+ this.value = value;
+ }
+
+ int value() {
+ return value;
+ }
+
+ static Grid fromValue(int value) {
+ Grid[] list = Grid.values();
+ for (Grid action : list) {
+ if (action.value() == value) {
+ return action;
+ }
+ }
+ return null;
+ }
}
\ No newline at end of file
diff --git a/cameraview/src/main/res/values/attrs.xml b/cameraview/src/main/res/values/attrs.xml
index 54580969..6578e5bd 100644
--- a/cameraview/src/main/res/values/attrs.xml
+++ b/cameraview/src/main/res/values/attrs.xml
@@ -49,9 +49,9 @@
-
-
-
+
+
+
diff --git a/cameraview/src/main/views/com/otaliastudios/cameraview/GridLinesLayout.java b/cameraview/src/main/views/com/otaliastudios/cameraview/GridLinesLayout.java
index b5a8bde3..d8f16e4f 100644
--- a/cameraview/src/main/views/com/otaliastudios/cameraview/GridLinesLayout.java
+++ b/cameraview/src/main/views/com/otaliastudios/cameraview/GridLinesLayout.java
@@ -14,7 +14,7 @@ import android.view.View;
// TODO animate lines!
class GridLinesLayout extends View {
- @Grid private int gridMode;
+ private Grid gridMode;
private final Drawable horiz;
private final Drawable vert;
@@ -40,29 +40,28 @@ class GridLinesLayout extends View {
vert.setBounds(0, top, (int) width, bottom);
}
- @Grid
- public int getGridMode() {
+ public Grid getGridMode() {
return gridMode;
}
- public void setGridMode(@Grid int gridMode) {
+ public void setGridMode(Grid gridMode) {
this.gridMode = gridMode;
invalidate();
}
private int getLineCount() {
switch (gridMode) {
- case CameraConstants.GRID_OFF: return 0;
- case CameraConstants.GRID_3X3: return 2;
- case CameraConstants.GRID_PHI: return 2;
- case CameraConstants.GRID_4X4: return 3;
+ case OFF: return 0;
+ case DRAW_3X3: return 2;
+ case DRAW_PHI: return 2;
+ case DRAW_4X4: return 3;
}
return 0;
}
private float getLinePosition(int lineNumber) {
int lineCount = getLineCount();
- if (gridMode == CameraConstants.GRID_PHI) {
+ if (gridMode == Grid.DRAW_PHI) {
// 1 = 2x + GRIx
// 1 = x(2+GRI)
// x = 1/(2+GRI)
diff --git a/demo/src/main/java/com/otaliastudios/cameraview/demo/MainActivity.java b/demo/src/main/java/com/otaliastudios/cameraview/demo/MainActivity.java
index 3eea3845..135352fc 100644
--- a/demo/src/main/java/com/otaliastudios/cameraview/demo/MainActivity.java
+++ b/demo/src/main/java/com/otaliastudios/cameraview/demo/MainActivity.java
@@ -17,6 +17,7 @@ import com.otaliastudios.cameraview.CameraConstants;
import com.otaliastudios.cameraview.CameraListener;
import com.otaliastudios.cameraview.CameraView;
import com.otaliastudios.cameraview.Facing;
+import com.otaliastudios.cameraview.Grid;
import com.otaliastudios.cameraview.Size;
import java.io.File;
@@ -256,12 +257,12 @@ public class MainActivity extends AppCompatActivity implements View.OnLayoutChan
RadioGroup.OnCheckedChangeListener gridModeChangedListener = new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
- int grid = CameraConstants.GRID_OFF;
+ Grid grid = Grid.OFF;
switch (checkedId) {
- case R.id.gridModeOff: grid = CameraConstants.GRID_OFF; break;
- case R.id.gridMode3x3: grid = CameraConstants.GRID_3X3; break;
- case R.id.gridMode4x4: grid = CameraConstants.GRID_4X4; break;
- case R.id.gridModeGolden: grid = CameraConstants.GRID_PHI; break;
+ case R.id.gridModeOff: grid = Grid.OFF; break;
+ case R.id.gridMode3x3: grid = Grid.DRAW_3X3; break;
+ case R.id.gridMode4x4: grid = Grid.DRAW_4X4; break;
+ case R.id.gridModeGolden: grid = Grid.DRAW_PHI; break;
}
camera.setGrid(grid);
message("Grid mode changed!", false);