From a61bbdc7cc171d0d2c593b19bf3b3902679589be Mon Sep 17 00:00:00 2001 From: Roman Rodionov Date: Thu, 21 Mar 2024 15:22:54 +0100 Subject: [PATCH 1/2] - need to find proper parameter in indigo --- .../src/infrastructure/services/helpers.ts | 27 +++++++++++++++++++ .../src/infrastructure/services/index.ts | 1 + .../services/struct/remoteStructService.ts | 2 ++ .../struct/standaloneStructService.ts | 4 ++- 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 packages/ketcher-core/src/infrastructure/services/helpers.ts diff --git a/packages/ketcher-core/src/infrastructure/services/helpers.ts b/packages/ketcher-core/src/infrastructure/services/helpers.ts new file mode 100644 index 0000000000..c51b1220bd --- /dev/null +++ b/packages/ketcher-core/src/infrastructure/services/helpers.ts @@ -0,0 +1,27 @@ +import { ShowHydrogenLabels } from 'application/render'; +import { ketcherProvider } from 'application/utils'; + +enum IndigoShowHydrogenLabelsMode { + OFF = 'none', + HETERO = 'hetero', + TERMINAL_HETERO = 'terminal-hetero', + ALL = 'all', +} + +export function getLabelRenderModeForIndigo() { + const renderModeMapping = { + [ShowHydrogenLabels.Off]: IndigoShowHydrogenLabelsMode.OFF, + [ShowHydrogenLabels.Hetero]: IndigoShowHydrogenLabelsMode.HETERO, + // Terminal does not supported by indigo + [ShowHydrogenLabels.Terminal]: IndigoShowHydrogenLabelsMode.OFF, + [ShowHydrogenLabels.TerminalAndHetero]: + IndigoShowHydrogenLabelsMode.TERMINAL_HETERO, + [ShowHydrogenLabels.On]: IndigoShowHydrogenLabelsMode.ALL, + }; + + return ( + renderModeMapping[ + ketcherProvider.getKetcher().editor.options().showHydrogenLabels + ] || IndigoShowHydrogenLabelsMode.OFF + ); +} diff --git a/packages/ketcher-core/src/infrastructure/services/index.ts b/packages/ketcher-core/src/infrastructure/services/index.ts index 3ae6125b84..648ef6a55d 100644 --- a/packages/ketcher-core/src/infrastructure/services/index.ts +++ b/packages/ketcher-core/src/infrastructure/services/index.ts @@ -15,3 +15,4 @@ ***************************************************************************/ export * from './struct'; +export * from './helpers'; diff --git a/packages/ketcher-core/src/infrastructure/services/struct/remoteStructService.ts b/packages/ketcher-core/src/infrastructure/services/struct/remoteStructService.ts index 5f09baabaa..a6f6f3dbcd 100644 --- a/packages/ketcher-core/src/infrastructure/services/struct/remoteStructService.ts +++ b/packages/ketcher-core/src/infrastructure/services/struct/remoteStructService.ts @@ -44,6 +44,7 @@ import { StructServiceOptions, } from 'domain/services'; import { KetcherLogger } from 'utilities'; +import { getLabelRenderModeForIndigo } from 'infrastructure/services/helpers'; function pollDeferred(process, complete, timeGap, startTimeGap) { return new Promise((resolve, reject) => { @@ -348,6 +349,7 @@ export class RemoteStructService implements StructService { { 'render-output-format': outputFormat, 'render-bond-line-width': bondThickness, + 'render-label-mode': getLabelRenderModeForIndigo(), }, (response) => response.then((resp) => resp.text()), ); diff --git a/packages/ketcher-standalone/src/infrastructure/services/struct/standaloneStructService.ts b/packages/ketcher-standalone/src/infrastructure/services/struct/standaloneStructService.ts index f863423a27..f960fba4a9 100644 --- a/packages/ketcher-standalone/src/infrastructure/services/struct/standaloneStructService.ts +++ b/packages/ketcher-standalone/src/infrastructure/services/struct/standaloneStructService.ts @@ -63,6 +63,7 @@ import { RecognizeResult, StructService, StructServiceOptions, + getLabelRenderModeForIndigo, } from 'ketcher-core'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment @@ -702,6 +703,7 @@ class IndigoService implements StructService { ): Promise { const { outputFormat, backgroundColor, bondThickness, ...restOptions } = options; + return new Promise((resolve, reject) => { const action = ({ data }: OutputMessageWrapper) => { const msg: OutputMessage = data; @@ -717,8 +719,8 @@ class IndigoService implements StructService { const commandOptions: CommandOptions = { ...this.defaultOptions, ...restOptions, + 'render-label-mode': getLabelRenderModeForIndigo(), }; - const commandData: GenerateImageCommandData = { struct: inputData, outputFormat: outputFormat || 'png', From 8ea7b77162796cf87de3a3703fbb2fd8cd5c17b3 Mon Sep 17 00:00:00 2001 From: Roman Rodionov Date: Thu, 21 Mar 2024 18:59:37 +0100 Subject: [PATCH 2/2] #4192 - Export to SVG/PNG ignores "Show hydrogen labels" option --- .../ketcher-core/src/infrastructure/services/helpers.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/ketcher-core/src/infrastructure/services/helpers.ts b/packages/ketcher-core/src/infrastructure/services/helpers.ts index c51b1220bd..39f2ee95ea 100644 --- a/packages/ketcher-core/src/infrastructure/services/helpers.ts +++ b/packages/ketcher-core/src/infrastructure/services/helpers.ts @@ -9,11 +9,12 @@ enum IndigoShowHydrogenLabelsMode { } export function getLabelRenderModeForIndigo() { + // Terminal does not supported by indigo so TERMINAL_HETERO used + // Off removing all labels in indigo so HETERO used const renderModeMapping = { - [ShowHydrogenLabels.Off]: IndigoShowHydrogenLabelsMode.OFF, + [ShowHydrogenLabels.Off]: IndigoShowHydrogenLabelsMode.HETERO, [ShowHydrogenLabels.Hetero]: IndigoShowHydrogenLabelsMode.HETERO, - // Terminal does not supported by indigo - [ShowHydrogenLabels.Terminal]: IndigoShowHydrogenLabelsMode.OFF, + [ShowHydrogenLabels.Terminal]: IndigoShowHydrogenLabelsMode.TERMINAL_HETERO, [ShowHydrogenLabels.TerminalAndHetero]: IndigoShowHydrogenLabelsMode.TERMINAL_HETERO, [ShowHydrogenLabels.On]: IndigoShowHydrogenLabelsMode.ALL,