aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/collections
diff options
context:
space:
mode:
authorTyler Schicke <tyler_schicke@brown.edu>2019-02-12 16:12:13 -0500
committerTyler Schicke <tyler_schicke@brown.edu>2019-02-12 16:12:13 -0500
commitb199fa38a0697c850a48651639bbfc6b5f713055 (patch)
treec838196d79d65cafa29ff48294d9c8a1d063aaef /src/client/views/collections
parent2541c2cd562251143050554f3c0117caed6d9345 (diff)
Started adding transforms
Diffstat (limited to 'src/client/views/collections')
-rw-r--r--src/client/views/collections/CollectionFreeFormView.tsx16
-rw-r--r--src/client/views/collections/CollectionViewBase.tsx4
2 files changed, 15 insertions, 5 deletions
diff --git a/src/client/views/collections/CollectionFreeFormView.tsx b/src/client/views/collections/CollectionFreeFormView.tsx
index 977a03f58..5b520676f 100644
--- a/src/client/views/collections/CollectionFreeFormView.tsx
+++ b/src/client/views/collections/CollectionFreeFormView.tsx
@@ -123,14 +123,17 @@ export class CollectionFreeFormView extends CollectionViewBase {
let coefficient = 1000;
// if (modes[e.deltaMode] == 'pixels') coefficient = 50;
// else if (modes[e.deltaMode] == 'lines') coefficient = 1000; // This should correspond to line-height??
+ let transform = this.getTransform();
+ let localTransform = this.getLocalTransform();
- let { LocalX, Ss, Panxx, Xx, LocalY, Panyy, Yy, ContainerX, ContainerY } = this.props.ContainingDocumentView!.TransformToLocalPoint(e.pageX, e.pageY);
+ let deltaScale = (1 - (e.deltaY / coefficient)) * transform.Scale;
+ let newDeltaScale = this.isAnnotationOverlay ? Math.max(1, deltaScale) : deltaScale;
+ let [x, y] = transform.transformPoint(e.clientX, e.clientY);
- var deltaScale = (1 - (e.deltaY / coefficient)) * Ss;
- var newDeltaScale = this.isAnnotationOverlay ? Math.max(1, deltaScale) : deltaScale;
+ localTransform.scaleAbout(newDeltaScale, x, y);
this.props.DocumentForCollection.SetNumber(KeyStore.Scale, newDeltaScale);
- this.SetPan(ContainerX - (LocalX * newDeltaScale + Xx), ContainerY - (LocalY * newDeltaScale + Yy));
+ this.SetPan(localTransform.TranslateX, localTransform.TranslateY);
}
@action
@@ -213,6 +216,11 @@ export class CollectionFreeFormView extends CollectionViewBase {
return this.props.GetTransform().scaled(this.scale).translate(x, y);
}
+ getLocalTransform = (): Transform => {
+ const [x, y] = this.translate;
+ return new Transform(x, y, this.scale);
+ }
+
render() {
const Document: Document = this.props.DocumentForCollection;
const value: Document[] = Document.GetList<Document>(this.props.CollectionFieldKey, []);
diff --git a/src/client/views/collections/CollectionViewBase.tsx b/src/client/views/collections/CollectionViewBase.tsx
index eea7908ce..2dc6abf11 100644
--- a/src/client/views/collections/CollectionViewBase.tsx
+++ b/src/client/views/collections/CollectionViewBase.tsx
@@ -27,7 +27,9 @@ export const COLLECTION_BORDER_WIDTH = 2;
export class CollectionViewBase extends React.Component<CollectionViewProps> {
public static LayoutString(collectionType: string) {
- return `<${collectionType} DocumentForCollection={Document} CollectionFieldKey={DataKey} ContainingDocumentView={DocumentView}/>`;
+ return `<${collectionType} DocumentForCollection={Document} CollectionFieldKey={DataKey}
+ GetTransform={GetTransform}
+ ContainingDocumentView={DocumentView}/>`;
}
@computed
public get active(): boolean {