aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/.DS_Storebin10244 -> 10244 bytes
-rw-r--r--src/client/views/InkStrokeProperties.ts28
-rw-r--r--src/server/ApiManagers/FireflyManager.ts53
3 files changed, 72 insertions, 9 deletions
diff --git a/src/.DS_Store b/src/.DS_Store
index 9b66f8d8e..1ef749033 100644
--- a/src/.DS_Store
+++ b/src/.DS_Store
Binary files differ
diff --git a/src/client/views/InkStrokeProperties.ts b/src/client/views/InkStrokeProperties.ts
index 358274f0e..8165b7f4e 100644
--- a/src/client/views/InkStrokeProperties.ts
+++ b/src/client/views/InkStrokeProperties.ts
@@ -74,6 +74,7 @@ export class InkStrokeProperties {
doc._height = (newYrange.max - newYrange.min) * ptsYscale + NumCast(doc.stroke_width);
doc.x = oldXrange.coord + (newXrange.min - oldXrange.min) * ptsXscale;
doc.y = oldYrange.coord + (newYrange.min - oldYrange.min) * ptsYscale;
+
Doc.SetInPlace(doc, 'stroke', new InkField(newPoints), true);
appliedFunc = true;
}
@@ -248,7 +249,7 @@ export class InkStrokeProperties {
/**
* Handles the movement/scaling of a control point.
*/
- moveControlPtHandle = undoable((inkView: DocumentView, deltaX: number, deltaY: number, controlIndex: number, origInk?: InkData) => {
+ moveControlPtHandle = undoable((inkView: DocumentView, deltaX: number, deltaY: number, controlIndex: number, origInk?: InkData, noPush?: boolean) => {
inkView &&
this.applyFunction(inkView, (view: DocumentView, ink: InkData) => {
const order = controlIndex % 4;
@@ -288,10 +289,11 @@ export class InkStrokeProperties {
const { finalCtrls: rightCtrls /* , error: errorRight */ } = FitOneCurve(samplesRight, { X: startDir.x, Y: startDir.y }, { X: endDir.x, Y: endDir.y });
finalCtrls = finalCtrls.concat(rightCtrls);
newink.splice(this._currentPoint - 4, 8, ...finalCtrls);
- return newink;
}
- return ink.map((pt, i) => {
+ const prevData = (inkView.ComponentView as InkingStroke).screenCtrlPts;
+
+ const newInk = ink.map((pt, i) => {
const leftHandlePoint = order === 0 && i === controlIndex + 1;
const rightHandlePoint = order === 0 && controlIndex !== 0 && i === controlIndex - 2;
if (controlIndex === i || (order === 0 && controlIndex !== 0 && i === controlIndex - 1) || (order === 3 && i === controlIndex - 1)) {
@@ -312,6 +314,26 @@ export class InkStrokeProperties {
}
return pt;
});
+
+ if (inkView.IsSelected && !noPush && !InkingStroke.IsClosed(prevData)) {
+ const ffview = CollectionFreeFormView.from(inkView);
+ ffview?.childDocs.forEach(d => {
+ const oinkDoc = DocumentView.getDocumentView(d);
+ const oinkView = oinkDoc?.ComponentView as InkingStroke;
+ if (oinkView instanceof InkingStroke && oinkDoc && oinkDoc.Document !== inkView.Document) {
+ const { nearestSeg, nearestT } = InkStrokeProperties.nearestPtToStroke(oinkView.screenCtrlPts, prevData[controlIndex]);
+ const locdelta = inkView.screenToContentsTransform().inverse().transformDirection(deltaX, deltaY);
+ const index = nearestSeg + Math.round(nearestT) * 4;
+ const oinkData = oinkView.inkScaledData().inkData;
+ const closed = InkingStroke.IsClosed(oinkData);
+ InkStrokeProperties.Instance.moveControlPtHandle(oinkDoc, locdelta[0], locdelta[1], index, undefined, true);
+ if (index === oinkData.length && closed) {
+ InkStrokeProperties.Instance.moveControlPtHandle(oinkDoc, locdelta[0], locdelta[1], 0, undefined, true);
+ }
+ }
+ });
+ }
+ return newInk;
});
}, 'move ink ctrl pt');
diff --git a/src/server/ApiManagers/FireflyManager.ts b/src/server/ApiManagers/FireflyManager.ts
index 5e3ba1f83..e10e43704 100644
--- a/src/server/ApiManagers/FireflyManager.ts
+++ b/src/server/ApiManagers/FireflyManager.ts
@@ -16,7 +16,7 @@ export default class FireflyManager extends ApiManager {
});
askFirefly = (prompt: string = 'a realistic illustration of a cat coding') => {
const fetched = this.getBearerToken().then(response =>
- response.json().then((data: { access_token: string }) =>
+ (response as Response).json().then((data: { access_token: string }) =>
fetch('https://firefly-api.adobe.io/v3/images/generate', {
method: 'POST',
headers: [
@@ -36,16 +36,57 @@ export default class FireflyManager extends ApiManager {
);
return fetched;
};
+ askFireflyText = (testshotpng: Blob) => {
+ const fetched = this.getBearerToken().then(response =>
+ (response as Response).json().then((data: { access_token: string }) => {
+ return fetch('https://sensei.adobe.io/services/v2/predict', {
+ method: 'POST',
+ headers: [
+ ['Prefer', 'respond-async, wait=59'],
+ ['x-api-key', process.env._CLIENT_FIREFLY_CLIENT_ID ?? ''],
+ ['content-type', 'multipart/form-data'],
+ ['Authorization', `Bearer ${data.access_token}`],
+ ],
+ body: ((form: FormData) => {
+ form.append('file', testshotpng);
+ form.append(
+ 'contentAnalyzerRequests',
+ JSON.stringify({
+ 'sensei:name': 'Feature:cintel-object-detection:Service-b9ace8b348b6433e9e7d82371aa16690',
+ })
+ );
+ return form;
+ })(new FormData()),
+ }).then(response2 =>
+ response2
+ .json()
+ .then(json => {
+ console.log(json);
+ return '';
+ })
+ .catch(error => {
+ console.error('Error:', error);
+ return '';
+ })
+ );
+ })
+ );
+ return fetched;
+ };
protected initialize(register: Registration): void {
register({
method: Method.POST,
subscription: '/queryFireflyImage',
secureHandler: ({ req, res }) =>
- this.askFirefly(req.body.prompt).then(fire =>
- DashUploadUtils.UploadImage(JSON.parse(fire).url).then(info => {
- if (info instanceof Error) _invalid(res, info.message);
- else _success(res, info.accessPaths.agnostic.client);
- })
+ fetch('http://localhost:1050/files/images/testshot.png').then(json =>
+ json.blob().then(file =>
+ this.askFireflyText(file).then(fire =>
+ DashUploadUtils.UploadImage(JSON.parse(fire).url).then(info => {
+ if (info instanceof Error) _invalid(res, info.message);
+ else _success(res, info.accessPaths.agnostic.client);
+ })
+ )
+ )
),
});
}