import android.view.MotionEvent;
import android.view.View;
-import com.android.gallery3d.app.Log;
+import com.android.gallery3d.filtershow.history.HistoryItem;
+import com.android.gallery3d.filtershow.filters.FilterRepresentation;
import com.android.gallery3d.filtershow.imageshow.GeometryMetadata.FLIP;
-import com.android.gallery3d.filtershow.presets.ImagePreset;
+import com.android.gallery3d.filtershow.pipeline.ImagePreset;
public abstract class ImageGeometry extends ImageShow {
protected boolean mVisibilityGained = false;
}
// Overwrites local with master
- protected void syncLocalToMasterGeometry() {
+ public void syncLocalToMasterGeometry() {
mLocalGeometry = getGeometry();
calculateLocalScalingFactorAndOffset();
}
default:
setNoAction();
}
- if (getPanelController() != null) {
- getPanelController().onNewValue(getLocalValue());
- }
invalidate();
return true;
}
mMode = MODES.NONE;
}
- @Override
- public boolean showTitle() {
- return false;
- }
-
- public String getName() {
- return "Geometry";
- }
-
public void saveAndSetPreset() {
- ImagePreset lastHistoryItem = MasterImage.getImage().getHistory().getLast();
- if (lastHistoryItem != null && lastHistoryItem.historyName().equalsIgnoreCase(getName())) {
+ FilterRepresentation lastAction = null;
+ HistoryItem historyItem = MasterImage.getImage().getHistory().getLast();
+ if (historyItem != null) {
+ lastAction = historyItem.getFilterRepresentation();
+ }
+
+ if (lastAction != null
+ && lastAction.getSerializationName().equalsIgnoreCase(
+ GeometryMetadata.SERIALIZATION_NAME)) {
getImagePreset().setGeometry(mLocalGeometry);
resetImageCaches(this);
} else {
if (mLocalGeometry.hasModifications()) {
ImagePreset copy = new ImagePreset(getImagePreset());
copy.setGeometry(mLocalGeometry);
- copy.setHistoryName(getName());
- copy.setIsFx(false);
- MasterImage.getImage().setPreset(copy, true);
+ // TODO: we should have multiple filter representations for each
+ // of the different geometry operations we have, otherwise we cannot
+ // differentiate them in the history/state
+ MasterImage.getImage().setPreset(copy, copy.getGeometry(), true);
}
}
+ MasterImage.getImage().notifyGeometryChange();
invalidate();
}
@Override
public void onDraw(Canvas canvas) {
- if (getDirtyGeometryFlag()) {
- syncLocalToMasterGeometry();
- clearDirtyGeometryFlag();
- }
Bitmap image = getFiltersOnlyImage();
if (image == null) {
invalidate();
return;
}
mHasDrawn = true;
+
drawShape(canvas, image);
}
p.setStrokeWidth(2);
canvas.drawPath(path, p);
- p.setColor(getDefaultBackgroundColor());
+ p.setColor(mBackgroundColor);
p.setAlpha(128);
p.setStyle(Paint.Style.FILL);
drawShadows(canvas, p, scaledCrop);
canvas.drawBitmap(photo, m1, p);
canvas.restore();
- p.setColor(getDefaultBackgroundColor());
+ p.setColor(mBackgroundColor);
p.setStyle(Paint.Style.FILL);
scaledCrop.offset(displayCenter[0] - scaledCrop.centerX(), displayCenter[1]
- scaledCrop.centerY());