aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/collections/collectionFreeForm
diff options
context:
space:
mode:
authorStanley Yip <stanley_yip@brown.edu>2019-10-29 19:09:04 -0400
committerStanley Yip <stanley_yip@brown.edu>2019-10-29 19:09:04 -0400
commitb7353705ee06292e570c9847d72287190f3f42ed (patch)
tree4026264bb2a072485269dcf3b9db5bbae7cb8920 /src/client/views/collections/collectionFreeForm
parent3cff8e7d101a528e392d885420de118cccca6ae5 (diff)
started implementing ink select with document decorations
Diffstat (limited to 'src/client/views/collections/collectionFreeForm')
-rw-r--r--src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx5
-rw-r--r--src/client/views/collections/collectionFreeForm/MarqueeView.tsx18
2 files changed, 16 insertions, 7 deletions
diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
index 123941b03..c24e52aba 100644
--- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
+++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
@@ -103,9 +103,10 @@ export class CollectionFreeFormView extends CollectionSubView(PanZoomDocument) {
added && this.updateCluster(newBox);
return added;
}
- private selectDocuments = (docs: Doc[]) => {
+ private selectDocuments = (docs: Doc[], ink: Map<any, any>[]) => {
SelectionManager.DeselectAll();
docs.map(doc => DocumentManager.Instance.getDocumentView(doc)).map(dv => dv && SelectionManager.SelectDoc(dv, true));
+ ink.forEach(i => SelectionManager.SelectInk(i, true));
}
public isCurrent(doc: Doc) { return !doc.isMinimized && (Math.abs(NumCast(doc.displayTimecode, -1) - NumCast(this.Document.currentTimecode, -1)) < 1.5 || NumCast(doc.displayTimecode, -1) === -1); }
@@ -190,7 +191,7 @@ export class CollectionFreeFormView extends CollectionSubView(PanZoomDocument) {
// hacky way to get a list of DocumentViews in the current view given a list of Documents in the current view
let prevSelected = SelectionManager.SelectedDocuments();
- this.selectDocuments(eles);
+ this.selectDocuments(eles, []);
let clusterDocs = SelectionManager.SelectedDocuments();
SelectionManager.DeselectAll();
prevSelected.map(dv => SelectionManager.SelectDoc(dv, true));
diff --git a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx
index 07db6354f..cd9ac7ecc 100644
--- a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx
+++ b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx
@@ -20,6 +20,7 @@ import { CollectionFreeFormView } from "./CollectionFreeFormView";
import "./MarqueeView.scss";
import React = require("react");
import MarqueeOptionsMenu from "./MarqueeOptionsMenu";
+import InkSelectDecorations from "../../InkSelectDecorations";
interface MarqueeViewProps {
getContainerTransform: () => Transform;
@@ -27,7 +28,7 @@ interface MarqueeViewProps {
container: CollectionFreeFormView;
addDocument: (doc: Doc) => boolean;
activeDocuments: () => Doc[];
- selectDocuments: (docs: Doc[]) => void;
+ selectDocuments: (docs: Doc[], ink: Map<any, any>[]) => void;
removeDocument: (doc: Doc) => boolean;
addLiveTextDocument: (doc: Doc) => void;
isSelected: () => boolean;
@@ -190,13 +191,14 @@ export class MarqueeView extends React.Component<MarqueeViewProps>
@action
onPointerUp = (e: PointerEvent): void => {
- if (!this.props.container.props.active()) this.props.selectDocuments([this.props.container.props.Document]);
+ if (!this.props.container.props.active()) this.props.selectDocuments([this.props.container.props.Document], []);
if (this._visible) {
let mselect = this.marqueeSelect();
if (!e.shiftKey) {
SelectionManager.DeselectAll(mselect.length ? undefined : this.props.container.props.Document);
}
- this.props.selectDocuments(mselect.length ? mselect : [this.props.container.props.Document]);
+ this.props.selectDocuments(mselect.length ? mselect : [this.props.container.props.Document],
+ this.ink ? [this.marqueeInkSelect(this.ink.inkData)] : []);
}
if (!this._commandExecuted && (Math.abs(this.Bounds.height * this.Bounds.width) > 100)) {
MarqueeOptionsMenu.Instance.createCollection = this.collection;
@@ -350,7 +352,7 @@ export class MarqueeView extends React.Component<MarqueeViewProps>
}
let newCollection = this.getCollection(selected);
this.props.addDocument(newCollection);
- this.props.selectDocuments([newCollection]);
+ this.props.selectDocuments([newCollection], []);
MarqueeOptionsMenu.Instance.fadeOut(true);
this.hideMarquee();
}
@@ -422,9 +424,14 @@ export class MarqueeView extends React.Component<MarqueeViewProps>
let centerShiftY = 0 - (this.Bounds.top + this.Bounds.height / 2);
ink.forEach((value: StrokeData, key: string, map: any) => {
if (InkingCanvas.IntersectStrokeRect(value, this.Bounds)) {
+ // let transform = this.props.container.props.ScreenToLocalTransform().scale(this.props.container.props.ContentScaling());
idata.set(key,
{
- pathData: value.pathData.map(val => ({ x: val.x + centerShiftX, y: val.y + centerShiftY })),
+ pathData: value.pathData.map(val => {
+ let tVal = this.props.getTransform().inverse().transformPoint(val.x, val.y);
+ return { x: tVal[0], y: tVal[1] };
+ // return { x: val.x + centerShiftX, y: val.y + centerShiftY }
+ }),
color: value.color,
width: value.width,
tool: value.tool,
@@ -432,6 +439,7 @@ export class MarqueeView extends React.Component<MarqueeViewProps>
});
}
});
+ // InkSelectDecorations.Instance.SetSelected(idata);
return idata;
}