test_class.declarator: exif
test_class.original_string: Exif exif;
test_class.type: Exif
test_class.var_name: exif
test_class.file: camera-view/src/test/java/com/xlythe/view/camera/ExifTest.java
test_class.identifier: ExifTest
test_case.body: @Test
      public void rotate() {
          assertEquals(0, exif.getRotation());
          exif.rotate(90);
          assertEquals(90, exif.getRotation());
          exif.rotate(90);
          assertEquals(180, exif.getRotation());
          exif.rotate(90);
          assertEquals(270, exif.getRotation());
          exif.rotate(90);
          assertEquals(0, exif.getRotation());
          exif.rotate(-90);
          assertEquals(270, exif.getRotation());
          exif.rotate(360);
          assertEquals(270, exif.getRotation());
          exif.rotate(500 * 360 - 90);
          assertEquals(180, exif.getRotation());
      }
test_case.class_method_signature: ExifTest.rotate()
test_case.full_signature: @Test public void rotate()
test_case.identifier: rotate
test_case.invocations: assertEquals getRotation rotate assertEquals getRotation rotate assertEquals getRotation rotate assertEquals getRotation rotate assertEquals getRotation rotate assertEquals getRotation rotate assertEquals getRotation rotate assertEquals getRotation
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void rotate()
focal_class.declarator: TAG = Exif.class.getSimpleName()
focal_class.modifier: private static final
focal_class.original_string: private static final String TAG = Exif.class.getSimpleName();
focal_class.type: String
focal_class.var_name: TAG
focal_class.declarator: DATE_FORMAT = new SimpleDateFormat("yyyy:MM:dd", Locale.ENGLISH)
focal_class.modifier: private static final
focal_class.original_string: private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy:MM:dd", Locale.ENGLISH);
focal_class.type: SimpleDateFormat
focal_class.var_name: DATE_FORMAT
focal_class.declarator: TIME_FORMAT = new SimpleDateFormat("HH:mm:ss", Locale.ENGLISH)
focal_class.modifier: private static final
focal_class.original_string: private static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm:ss", Locale.ENGLISH);
focal_class.type: SimpleDateFormat
focal_class.var_name: TIME_FORMAT
focal_class.declarator: DATETIME_FORMAT = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss", Locale.ENGLISH)
focal_class.modifier: private static final
focal_class.original_string: private static final SimpleDateFormat DATETIME_FORMAT = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss", Locale.ENGLISH);
focal_class.type: SimpleDateFormat
focal_class.var_name: DATETIME_FORMAT
focal_class.declarator: KILOMETERS_PER_HOUR = "K"
focal_class.modifier: private static final
focal_class.original_string: private static final String KILOMETERS_PER_HOUR = "K";
focal_class.type: String
focal_class.var_name: KILOMETERS_PER_HOUR
focal_class.declarator: MILES_PER_HOUR = "M"
focal_class.modifier: private static final
focal_class.original_string: private static final String MILES_PER_HOUR = "M";
focal_class.type: String
focal_class.var_name: MILES_PER_HOUR
focal_class.declarator: KNOTS = "N"
focal_class.modifier: private static final
focal_class.original_string: private static final String KNOTS = "N";
focal_class.type: String
focal_class.var_name: KNOTS
focal_class.declarator: mExifInterface
focal_class.modifier: private final
focal_class.original_string: private final ExifInterface mExifInterface;
focal_class.type: ExifInterface
focal_class.var_name: mExifInterface
focal_class.declarator: mRemoveTimestamp = false
focal_class.modifier: private
focal_class.original_string: private boolean mRemoveTimestamp = false;
focal_class.type: boolean
focal_class.var_name: mRemoveTimestamp
focal_class.file: camera-view/src/main/java/com/xlythe/view/camera/Exif.java
focal_class.identifier: Exif
focal_class.class_method_signature: Exif.Exif(File file)
focal_class.full_signature: public  Exif(File file)
focal_class.identifier: Exif
focal_class.modifiers: public
focal_class.parameters: (File file)
focal_class.signature:  Exif(File file)
focal_class.class_method_signature: Exif.Exif(String filePath)
focal_class.full_signature: public  Exif(String filePath)
focal_class.identifier: Exif
focal_class.modifiers: public
focal_class.parameters: (String filePath)
focal_class.signature:  Exif(String filePath)
focal_class.class_method_signature: Exif.Exif(InputStream is)
focal_class.full_signature: public  Exif(InputStream is)
focal_class.identifier: Exif
focal_class.modifiers: public
focal_class.parameters: (InputStream is)
focal_class.signature:  Exif(InputStream is)
focal_class.class_method_signature: Exif.Exif(ExifInterface exifInterface)
focal_class.full_signature: private  Exif(ExifInterface exifInterface)
focal_class.identifier: Exif
focal_class.modifiers: private
focal_class.parameters: (ExifInterface exifInterface)
focal_class.signature:  Exif(ExifInterface exifInterface)
focal_class.class_method_signature: Exif.save()
focal_class.full_signature: public void save()
focal_class.identifier: save
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void save()
focal_class.class_method_signature: Exif.toString()
focal_class.full_signature: @Override public String toString()
focal_class.identifier: toString
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String toString()
focal_class.class_method_signature: Exif.getOrientation()
focal_class.full_signature: private int getOrientation()
focal_class.identifier: getOrientation
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int getOrientation()
focal_class.class_method_signature: Exif.getWidth()
focal_class.full_signature: public int getWidth()
focal_class.identifier: getWidth
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int getWidth()
focal_class.class_method_signature: Exif.getHeight()
focal_class.full_signature: public int getHeight()
focal_class.identifier: getHeight
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int getHeight()
focal_class.class_method_signature: Exif.getDescription()
focal_class.full_signature: @Nullable public String getDescription()
focal_class.identifier: getDescription
focal_class.modifiers: @Nullable public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getDescription()
focal_class.class_method_signature: Exif.setDescription(@Nullable String description)
focal_class.full_signature: public void setDescription(@Nullable String description)
focal_class.identifier: setDescription
focal_class.modifiers: public
focal_class.parameters: (@Nullable String description)
focal_class.return: void
focal_class.signature: void setDescription(@Nullable String description)
focal_class.class_method_signature: Exif.getRotation()
focal_class.full_signature: public int getRotation()
focal_class.identifier: getRotation
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int getRotation()
focal_class.class_method_signature: Exif.isFlippedVertically()
focal_class.full_signature: public boolean isFlippedVertically()
focal_class.identifier: isFlippedVertically
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isFlippedVertically()
focal_class.class_method_signature: Exif.isFlippedHorizontally()
focal_class.full_signature: public boolean isFlippedHorizontally()
focal_class.identifier: isFlippedHorizontally
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isFlippedHorizontally()
focal_class.class_method_signature: Exif.attachLastModifiedTimestamp()
focal_class.full_signature: private void attachLastModifiedTimestamp()
focal_class.identifier: attachLastModifiedTimestamp
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void attachLastModifiedTimestamp()
focal_class.class_method_signature: Exif.getLastModifiedTimestamp()
focal_class.full_signature: public long getLastModifiedTimestamp()
focal_class.identifier: getLastModifiedTimestamp
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: long
focal_class.signature: long getLastModifiedTimestamp()
focal_class.class_method_signature: Exif.getTimestamp()
focal_class.full_signature: public long getTimestamp()
focal_class.identifier: getTimestamp
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: long
focal_class.signature: long getTimestamp()
focal_class.class_method_signature: Exif.getLocation()
focal_class.full_signature: @Nullable public Location getLocation()
focal_class.identifier: getLocation
focal_class.modifiers: @Nullable public
focal_class.parameters: ()
focal_class.return: Location
focal_class.signature: Location getLocation()
focal_class.class_method_signature: Exif.rotate(int degrees)
focal_class.full_signature: public void rotate(int degrees)
focal_class.identifier: rotate
focal_class.modifiers: public
focal_class.parameters: (int degrees)
focal_class.return: void
focal_class.signature: void rotate(int degrees)
focal_class.class_method_signature: Exif.flipVertically()
focal_class.full_signature: public void flipVertically()
focal_class.identifier: flipVertically
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void flipVertically()
focal_class.class_method_signature: Exif.flipHorizontally()
focal_class.full_signature: public void flipHorizontally()
focal_class.identifier: flipHorizontally
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void flipHorizontally()
focal_class.class_method_signature: Exif.attachTimestamp()
focal_class.full_signature: public void attachTimestamp()
focal_class.identifier: attachTimestamp
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void attachTimestamp()
focal_class.class_method_signature: Exif.removeTimestamp()
focal_class.full_signature: public void removeTimestamp()
focal_class.identifier: removeTimestamp
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void removeTimestamp()
focal_class.class_method_signature: Exif.attachLocation(Location location)
focal_class.full_signature: public void attachLocation(Location location)
focal_class.identifier: attachLocation
focal_class.modifiers: public
focal_class.parameters: (Location location)
focal_class.return: void
focal_class.signature: void attachLocation(Location location)
focal_class.class_method_signature: Exif.removeLocation()
focal_class.full_signature: public void removeLocation()
focal_class.identifier: removeLocation
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void removeLocation()
focal_class.class_method_signature: Exif.parseTimestamp(@Nullable String date, @Nullable String time)
focal_class.full_signature: private long parseTimestamp(@Nullable String date, @Nullable String time)
focal_class.identifier: parseTimestamp
focal_class.modifiers: private
focal_class.parameters: (@Nullable String date, @Nullable String time)
focal_class.return: long
focal_class.signature: long parseTimestamp(@Nullable String date, @Nullable String time)
focal_class.class_method_signature: Exif.parseTimestamp(@Nullable String datetime)
focal_class.full_signature: private long parseTimestamp(@Nullable String datetime)
focal_class.identifier: parseTimestamp
focal_class.modifiers: private
focal_class.parameters: (@Nullable String datetime)
focal_class.return: long
focal_class.signature: long parseTimestamp(@Nullable String datetime)
focal_class.class_method_signature: Exif.convertToExifDateTime(long timestamp)
focal_class.full_signature: private static String convertToExifDateTime(long timestamp)
focal_class.identifier: convertToExifDateTime
focal_class.modifiers: private static
focal_class.parameters: (long timestamp)
focal_class.return: String
focal_class.signature: String convertToExifDateTime(long timestamp)
focal_class.class_method_signature: Exif.convertFromExifDateTime(String dateTime)
focal_class.full_signature: private static Date convertFromExifDateTime(String dateTime)
focal_class.identifier: convertFromExifDateTime
focal_class.modifiers: private static
focal_class.parameters: (String dateTime)
focal_class.return: Date
focal_class.signature: Date convertFromExifDateTime(String dateTime)
focal_class.class_method_signature: Exif.convertToExifDate(long timestamp)
focal_class.full_signature: private static String convertToExifDate(long timestamp)
focal_class.identifier: convertToExifDate
focal_class.modifiers: private static
focal_class.parameters: (long timestamp)
focal_class.return: String
focal_class.signature: String convertToExifDate(long timestamp)
focal_class.class_method_signature: Exif.convertFromExifDate(String date)
focal_class.full_signature: private static Date convertFromExifDate(String date)
focal_class.identifier: convertFromExifDate
focal_class.modifiers: private static
focal_class.parameters: (String date)
focal_class.return: Date
focal_class.signature: Date convertFromExifDate(String date)
focal_class.class_method_signature: Exif.convertToExifTime(long timestamp)
focal_class.full_signature: private static String convertToExifTime(long timestamp)
focal_class.identifier: convertToExifTime
focal_class.modifiers: private static
focal_class.parameters: (long timestamp)
focal_class.return: String
focal_class.signature: String convertToExifTime(long timestamp)
focal_class.class_method_signature: Exif.convertFromExifTime(String time)
focal_class.full_signature: private static Date convertFromExifTime(String time)
focal_class.identifier: convertFromExifTime
focal_class.modifiers: private static
focal_class.parameters: (String time)
focal_class.return: Date
focal_class.signature: Date convertFromExifTime(String time)
focal_method.body: public void rotate(int degrees) {
          if (degrees % 90 != 0) {
              Log.w(TAG, String.format("Can only rotate in right angles (eg. 0, 90, 180, 270). %d is unsupported.", degrees));
              mExifInterface.setAttribute(ExifInterface.TAG_ORIENTATION, String.valueOf(ExifInterface.ORIENTATION_UNDEFINED));
              return;
          }
  
          degrees %= 360;
  
          int orientation = getOrientation();
          while (degrees < 0) {
              degrees += 90;
  
              switch (orientation) {
                  case ExifInterface.ORIENTATION_FLIP_HORIZONTAL:
                      orientation = ExifInterface.ORIENTATION_TRANSPOSE;
                      break;
                  case ExifInterface.ORIENTATION_ROTATE_180:
                      orientation = ExifInterface.ORIENTATION_ROTATE_90;
                      break;
                  case ExifInterface.ORIENTATION_FLIP_VERTICAL:
                      orientation = ExifInterface.ORIENTATION_TRANSVERSE;
                      break;
                  case ExifInterface.ORIENTATION_TRANSPOSE:
                      orientation = ExifInterface.ORIENTATION_FLIP_VERTICAL;
                      break;
                  case ExifInterface.ORIENTATION_ROTATE_90:
                      orientation = ExifInterface.ORIENTATION_NORMAL;
                      break;
                  case ExifInterface.ORIENTATION_TRANSVERSE:
                      orientation = ExifInterface.ORIENTATION_FLIP_HORIZONTAL;
                      break;
                  case ExifInterface.ORIENTATION_ROTATE_270:
                      orientation = ExifInterface.ORIENTATION_ROTATE_90;
                      break;
                  case ExifInterface.ORIENTATION_NORMAL:
                      // Fall-through
                  case ExifInterface.ORIENTATION_UNDEFINED:
                      // Fall-through
                  default:
                      orientation = ExifInterface.ORIENTATION_ROTATE_270;
                      break;
              }
          }
          while (degrees > 0) {
              degrees -= 90;
  
              switch (orientation) {
                  case ExifInterface.ORIENTATION_FLIP_HORIZONTAL:
                      orientation = ExifInterface.ORIENTATION_TRANSVERSE;
                      break;
                  case ExifInterface.ORIENTATION_ROTATE_180:
                      orientation = ExifInterface.ORIENTATION_ROTATE_270;
                      break;
                  case ExifInterface.ORIENTATION_FLIP_VERTICAL:
                      orientation = ExifInterface.ORIENTATION_TRANSPOSE;
                      break;
                  case ExifInterface.ORIENTATION_TRANSPOSE:
                      orientation = ExifInterface.ORIENTATION_FLIP_HORIZONTAL;
                      break;
                  case ExifInterface.ORIENTATION_ROTATE_90:
                      orientation = ExifInterface.ORIENTATION_ROTATE_180;
                      break;
                  case ExifInterface.ORIENTATION_TRANSVERSE:
                      orientation = ExifInterface.ORIENTATION_FLIP_VERTICAL;
                      break;
                  case ExifInterface.ORIENTATION_ROTATE_270:
                      orientation = ExifInterface.ORIENTATION_NORMAL;
                      break;
                  case ExifInterface.ORIENTATION_NORMAL:
                      // Fall-through
                  case ExifInterface.ORIENTATION_UNDEFINED:
                      // Fall-through
                  default:
                      orientation = ExifInterface.ORIENTATION_ROTATE_90;
                      break;
              }
          }
          mExifInterface.setAttribute(ExifInterface.TAG_ORIENTATION, String.valueOf(orientation));
      }
focal_method.class_method_signature: Exif.rotate(int degrees)
focal_method.full_signature: public void rotate(int degrees)
focal_method.identifier: rotate
focal_method.invocations: w format setAttribute valueOf getOrientation setAttribute valueOf
focal_method.modifiers: public
focal_method.parameters: (int degrees)
focal_method.return: void
focal_method.signature: void rotate(int degrees)