Skip to content

Commit

Permalink
Adding missing rotation mode.
Browse files Browse the repository at this point in the history
Fixing some of the exiting ones.
  • Loading branch information
Sean Meiners committed Sep 5, 2013
1 parent 5e6c1f9 commit b7cac76
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 32 deletions.
52 changes: 33 additions & 19 deletions framework/Source/GPUImageCropFilter.m
Original file line number Diff line number Diff line change
Expand Up @@ -137,19 +137,19 @@ - (void)calculateCropTextureCoordinates;
cropTextureCoordinates[6] = maxX; // 1,1
cropTextureCoordinates[7] = maxY;
}; break;
case kGPUImageRotateLeft: // Broken
case kGPUImageRotateLeft: // Fixed
{
cropTextureCoordinates[0] = maxX; // 1,0
cropTextureCoordinates[1] = minY;
cropTextureCoordinates[0] = maxY; // 1,0
cropTextureCoordinates[1] = 1.0 - maxX;

cropTextureCoordinates[2] = maxX; // 1,1
cropTextureCoordinates[3] = maxY;
cropTextureCoordinates[4] = minX; // 0,0
cropTextureCoordinates[5] = minY;
cropTextureCoordinates[6] = minX; // 0,1
cropTextureCoordinates[7] = maxY;
cropTextureCoordinates[2] = maxY; // 1,1
cropTextureCoordinates[3] = 1.0 - minX;

cropTextureCoordinates[4] = minY; // 0,0
cropTextureCoordinates[5] = 1.0 - maxX;

cropTextureCoordinates[6] = minY; // 0,1
cropTextureCoordinates[7] = 1.0 - minX;
}; break;
case kGPUImageRotateRight: // Fixed
{
Expand All @@ -165,7 +165,7 @@ - (void)calculateCropTextureCoordinates;
cropTextureCoordinates[6] = maxY; // 1,0
cropTextureCoordinates[7] = 1.0 - maxX;
}; break;
case kGPUImageFlipVertical: // Broken
case kGPUImageFlipVertical: // Works for me
{
cropTextureCoordinates[0] = minX; // 0,1
cropTextureCoordinates[1] = maxY;
Expand All @@ -179,7 +179,7 @@ - (void)calculateCropTextureCoordinates;
cropTextureCoordinates[6] = maxX; // 1,0
cropTextureCoordinates[7] = minY;
}; break;
case kGPUImageFlipHorizonal: // Broken
case kGPUImageFlipHorizonal: // Works for me
{
cropTextureCoordinates[0] = maxX; // 1,0
cropTextureCoordinates[1] = minY;
Expand All @@ -193,16 +193,16 @@ - (void)calculateCropTextureCoordinates;
cropTextureCoordinates[6] = minX; // 0,1
cropTextureCoordinates[7] = maxY;
}; break;
case kGPUImageRotate180: // Broken
case kGPUImageRotate180: // Fixed
{
cropTextureCoordinates[0] = maxX; // 1,1
cropTextureCoordinates[1] = maxY;

cropTextureCoordinates[2] = maxX; // 1,0
cropTextureCoordinates[3] = minY;
cropTextureCoordinates[2] = minX; // 0,1
cropTextureCoordinates[3] = maxY;

cropTextureCoordinates[4] = minX; // 0,1
cropTextureCoordinates[5] = maxY;
cropTextureCoordinates[4] = maxX; // 1,0
cropTextureCoordinates[5] = minY;

cropTextureCoordinates[6] = minX; // 0,0
cropTextureCoordinates[7] = minY;
Expand All @@ -221,7 +221,21 @@ - (void)calculateCropTextureCoordinates;
cropTextureCoordinates[6] = maxY; // 1,1
cropTextureCoordinates[7] = 1.0 - minX;
}; break;
}
case kGPUImageRotateRightFlipHorizontal: // Fixed
{
cropTextureCoordinates[0] = maxY; // 1,1
cropTextureCoordinates[1] = 1.0 - minX;

cropTextureCoordinates[2] = maxY; // 1,0
cropTextureCoordinates[3] = 1.0 - maxX;

cropTextureCoordinates[4] = minY; // 0,1
cropTextureCoordinates[5] = 1.0 - minX;

cropTextureCoordinates[6] = minY; // 0,0
cropTextureCoordinates[7] = 1.0 - maxX;
}; break;
}
}

- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex;
Expand Down
15 changes: 14 additions & 1 deletion framework/Source/GPUImageFilter.m
Original file line number Diff line number Diff line change
Expand Up @@ -491,7 +491,14 @@ + (const GLfloat *)textureCoordinatesForRotation:(GPUImageRotationMode)rotationM
1.0f, 0.0f,
1.0f, 1.0f,
};


static const GLfloat rotateRightHorizontalFlipTextureCoordinates[] = {
1.0f, 1.0f,
1.0f, 0.0f,
0.0f, 1.0f,
0.0f, 0.0f,
};

static const GLfloat rotate180TextureCoordinates[] = {
1.0f, 1.0f,
0.0f, 1.0f,
Expand All @@ -507,6 +514,7 @@ + (const GLfloat *)textureCoordinatesForRotation:(GPUImageRotationMode)rotationM
case kGPUImageFlipVertical: return verticalFlipTextureCoordinates;
case kGPUImageFlipHorizonal: return horizontalFlipTextureCoordinates;
case kGPUImageRotateRightFlipVertical: return rotateRightVerticalFlipTextureCoordinates;
case kGPUImageRotateRightFlipHorizontal: return rotateRightHorizontalFlipTextureCoordinates;
case kGPUImageRotate180: return rotate180TextureCoordinates;
}
}
Expand Down Expand Up @@ -849,6 +857,11 @@ - (CGPoint)rotatedPoint:(CGPoint)pointToRotate forRotation:(GPUImageRotationMode
rotatedPoint.x = pointToRotate.y;
rotatedPoint.y = pointToRotate.x;
}; break;
case kGPUImageRotateRightFlipHorizontal:
{
rotatedPoint.x = 1.0 - pointToRotate.y;
rotatedPoint.y = 1.0 - pointToRotate.x;
}; break;
case kGPUImageRotate180:
{
rotatedPoint.x = 1.0 - pointToRotate.x;
Expand Down
20 changes: 10 additions & 10 deletions framework/Source/GPUImageVideoCamera.m
Original file line number Diff line number Diff line change
Expand Up @@ -926,8 +926,8 @@ - (void)updateOrientationSendToTargets;
{
case UIInterfaceOrientationPortrait:outputRotation = kGPUImageRotateRight; break;
case UIInterfaceOrientationPortraitUpsideDown:outputRotation = kGPUImageRotateLeft; break;
case UIInterfaceOrientationLandscapeLeft:outputRotation = kGPUImageNoRotation; break;
case UIInterfaceOrientationLandscapeRight:outputRotation = kGPUImageRotate180; break;
case UIInterfaceOrientationLandscapeLeft:outputRotation = kGPUImageRotate180; break;
case UIInterfaceOrientationLandscapeRight:outputRotation = kGPUImageNoRotation; break;
}
}
}
Expand All @@ -937,20 +937,20 @@ - (void)updateOrientationSendToTargets;
{
switch(_outputImageOrientation)
{
case UIInterfaceOrientationPortrait:outputRotation = kGPUImageRotateRight; break;
case UIInterfaceOrientationPortraitUpsideDown:outputRotation = kGPUImageRotateLeft; break;
case UIInterfaceOrientationLandscapeLeft:outputRotation = kGPUImageRotate180; break;
case UIInterfaceOrientationLandscapeRight:outputRotation = kGPUImageNoRotation; break;
case UIInterfaceOrientationPortrait:outputRotation = kGPUImageRotateRightFlipVertical; break;
case UIInterfaceOrientationPortraitUpsideDown:outputRotation = kGPUImageRotateRightFlipHorizontal; break;
case UIInterfaceOrientationLandscapeLeft:outputRotation = kGPUImageFlipHorizonal; break;
case UIInterfaceOrientationLandscapeRight:outputRotation = kGPUImageFlipVertical; break;
}
}
else
{
switch(_outputImageOrientation)
{
case UIInterfaceOrientationPortrait:outputRotation = kGPUImageRotateRightFlipVertical; break;
case UIInterfaceOrientationPortraitUpsideDown:outputRotation = kGPUImageRotateRight; break;
case UIInterfaceOrientationLandscapeLeft:outputRotation = kGPUImageFlipVertical; break;
case UIInterfaceOrientationLandscapeRight:outputRotation = kGPUImageFlipHorizonal; break;
case UIInterfaceOrientationPortrait:outputRotation = kGPUImageRotateRight; break;
case UIInterfaceOrientationPortraitUpsideDown:outputRotation = kGPUImageRotateLeft; break;
case UIInterfaceOrientationLandscapeLeft:outputRotation = kGPUImageNoRotation; break;
case UIInterfaceOrientationLandscapeRight:outputRotation = kGPUImageRotate180; break;
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions framework/Source/iOS/GPUImageContext.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
#import <CoreMedia/CoreMedia.h>
#import "GLProgram.h"

#define GPUImageRotationSwapsWidthAndHeight(rotation) ((rotation) == kGPUImageRotateLeft || (rotation) == kGPUImageRotateRight || (rotation) == kGPUImageRotateRightFlipVertical)
#define GPUImageRotationSwapsWidthAndHeight(rotation) ((rotation) == kGPUImageRotateLeft || (rotation) == kGPUImageRotateRight || (rotation) == kGPUImageRotateRightFlipVertical || (rotation) == kGPUImageRotateRightFlipHorizontal)

typedef enum { kGPUImageNoRotation, kGPUImageRotateLeft, kGPUImageRotateRight, kGPUImageFlipVertical, kGPUImageFlipHorizonal, kGPUImageRotateRightFlipVertical, kGPUImageRotate180 } GPUImageRotationMode;
typedef enum { kGPUImageNoRotation, kGPUImageRotateLeft, kGPUImageRotateRight, kGPUImageFlipVertical, kGPUImageFlipHorizonal, kGPUImageRotateRightFlipVertical, kGPUImageRotateRightFlipHorizontal, kGPUImageRotate180 } GPUImageRotationMode;

@interface GPUImageContext : NSObject

Expand Down
8 changes: 8 additions & 0 deletions framework/Source/iOS/GPUImageView.m
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,13 @@ + (const GLfloat *)textureCoordinatesForRotation:(GPUImageRotationMode)rotationM
0.0f, 1.0f,
};

static const GLfloat rotateRightHorizontalFlipTextureCoordinates[] = {
1.0f, 1.0f,
1.0f, 0.0f,
0.0f, 1.0f,
0.0f, 0.0f,
};

static const GLfloat rotate180TextureCoordinates[] = {
1.0f, 0.0f,
0.0f, 0.0f,
Expand All @@ -346,6 +353,7 @@ + (const GLfloat *)textureCoordinatesForRotation:(GPUImageRotationMode)rotationM
case kGPUImageFlipVertical: return verticalFlipTextureCoordinates;
case kGPUImageFlipHorizonal: return horizontalFlipTextureCoordinates;
case kGPUImageRotateRightFlipVertical: return rotateRightVerticalFlipTextureCoordinates;
case kGPUImageRotateRightFlipHorizontal: return rotateRightHorizontalFlipTextureCoordinates;
case kGPUImageRotate180: return rotate180TextureCoordinates;
}
}
Expand Down

0 comments on commit b7cac76

Please sign in to comment.