Skip to content

Commit 7ffd76d

Browse files
committed
refactor: cleanup unused code
1 parent 2e1fce6 commit 7ffd76d

File tree

5 files changed

+21
-63
lines changed

5 files changed

+21
-63
lines changed

src/utils/expose.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@ const algorithms = {
3030
export function createAPI(_: IO) {
3131
const { preprocessImage, toPNG: toBuffer, toImageData, defaultRandomSource } = _
3232
return {
33-
async encode(image: ArrayBuffer, mask: ArrayBuffer, options: EncodeOptions) {
33+
async encode(
34+
image: ArrayBufferLike | ArrayLike<number>,
35+
mask: ArrayBufferLike | ArrayLike<number>,
36+
options: EncodeOptions,
37+
) {
3438
const { data, height, width } = await algorithms[options.version].encode(
3539
preprocessImage(await toImageData(image)),
3640
preprocessImage(await toImageData(mask)).data,
@@ -39,7 +43,11 @@ export function createAPI(_: IO) {
3943
)
4044
return toBuffer(data, height, width)
4145
},
42-
async decode(image: ArrayBuffer, mask: ArrayBuffer, options: DecodeOptions) {
46+
async decode(
47+
image: ArrayBufferLike | ArrayLike<number>,
48+
mask: ArrayBufferLike | ArrayLike<number>,
49+
options: DecodeOptions,
50+
) {
4351
return algorithms[options.version].decode(await toImageData(image), (await toImageData(mask)).data, options)
4452
},
4553
}

src/v2/bit.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Options } from '../utils/stego-params.js'
2-
import { getPos, Accumulator } from './position.js'
2+
import { getPos } from './position.js'
33
import { TransformAlgorithm } from '../utils/transform.js'
44
import { DEFAULT_PARAM_COPIES } from '../constant.js'
55

@@ -104,7 +104,7 @@ function code2char(c: number) {
104104
return URIcharCode.indexOf(c) !== -1 ? URIchars[URIcharCode.indexOf(c)] : ''
105105
}
106106

107-
export function str2codes(text: string): number[] {
107+
function str2codes(text: string): number[] {
108108
const codes: number[] = []
109109
Array.from(text).map((char) => {
110110
const URIcodes = Array.from(encodeURI(char))
@@ -113,7 +113,7 @@ export function str2codes(text: string): number[] {
113113
return codes
114114
}
115115

116-
export function codes2bits(codes: number[], copies: number): Bit[] {
116+
function codes2bits(codes: number[], copies: number): Bit[] {
117117
const bits: Bit[] = []
118118
const pushByte = (byte: Bit[], n: number) => {
119119
for (let i = 0; i < 8; i += 1) {
@@ -402,7 +402,7 @@ export function mergeBits(dest: Bit[], ...src: Bit[][]) {
402402
return dest
403403
}
404404

405-
export function getBit(block: number[], acc: Accumulator, options: Options) {
405+
export function getBit(block: number[], options: Options) {
406406
const [pos1, pos2] = getPos(options)
407407
if (options.verbose) console.warn('decoded value: ', block[pos1], block[pos2])
408408
const diff = block[pos1] - block[pos2]

src/v2/position.ts

Lines changed: 3 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,8 @@
11
import { Options } from '../utils/stego-params.js'
22
import { TransformAlgorithm } from '../utils/transform.js'
3-
import { hashCode, squareCircleIntersect } from '../utils/helper.js'
4-
import { Locator } from '../utils/locator.js'
53

6-
export interface Accumulator {
7-
/**
8-
* previous bit position
9-
*/
10-
prevPos: number
11-
/**
12-
* previous hash code
13-
*/
14-
prevCode: string
15-
/**
16-
* available indices
17-
*/
18-
readonly indices: number[]
19-
}
20-
21-
export function createAcc({ size, transformAlgorithm }: Options) {
22-
switch (transformAlgorithm) {
23-
case TransformAlgorithm.FFT1D:
24-
return {
25-
prevPos: -1,
26-
prevCode: '',
27-
indices: squareCircleIntersect(size, 3),
28-
}
29-
default:
30-
return {
31-
prevPos: -1,
32-
prevCode: '',
33-
indices: [],
34-
}
35-
}
36-
}
37-
38-
export function getPosFromAcc(acc: Accumulator, { c }: Locator, { pass }: Options) {
39-
const { prevCode, prevPos, indices } = acc
40-
41-
if (c !== 0) {
42-
return prevPos
43-
}
44-
45-
const [index, code] = hashCode(`${pass}_${prevCode}`, indices.length, [])
46-
47-
acc.prevCode = code
48-
acc.prevPos = indices[index]
49-
return indices[index]
50-
}
51-
52-
export function getPos(options: Options): Array<number> {
53-
const { pass, size, transformAlgorithm } = options
4+
export function getPos(options: Options): [pos1: number, pos2: number] {
5+
const { size, transformAlgorithm } = options
546

557
switch (transformAlgorithm) {
568
case TransformAlgorithm.FFT1D:
@@ -62,6 +14,7 @@ export function getPos(options: Options): Array<number> {
6214
case TransformAlgorithm.FastDCT:
6315
return [3 * size + 1, 2 * size + 2]
6416
default:
17+
const _: never = transformAlgorithm
6518
throw new Error(`unknown algorithm in getPos: ${transformAlgorithm}`)
6619
}
6720
}

src/v2/stego.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
updateImgByPixelChannelAt,
1111
} from '../utils/image.js'
1212
import { mergeBits, str2bits, setBit, getBit, bits2str, param2bits, Bit, bits2param } from './bit.js'
13-
import { createAcc, getPos } from './position.js'
13+
import { getPos } from './position.js'
1414
import { isPixelVisibleAt, isBlockVisibleAt } from '../utils/mask.js'
1515
import { rand, randomBits, shuffleGroupBy3, unshuffleGroupBy3 } from '../utils/helper.js'
1616
import { loc2idx, loc2coord } from '../utils/locator.js'
@@ -183,7 +183,6 @@ export async function decodeImg(imgData: ImageData, maskData: Uint8ClampedArray,
183183
bit: Bit
184184
diff: number
185185
}[] = []
186-
const acc = createAcc(options)
187186
const im = new Array(size * size)
188187

189188
const [width, height] = cropImg(imgData, options)
@@ -205,10 +204,10 @@ export async function decodeImg(imgData: ImageData, maskData: Uint8ClampedArray,
205204
', bitId: ' +
206205
(shuffleArr[i] % (8 * options.copies)),
207206
)
208-
console.warn('bit: ' + getBit(block, acc, options).bit, block)
207+
console.warn('bit: ' + getBit(block, options).bit, block)
209208
}
210209
// let { bit, diff } = getBit(block, acc, options);
211-
richBits.push(getBit(block, acc, options))
210+
richBits.push(getBit(block, options))
212211

213212
blockId += 1
214213

tests/utils.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { clamp } from '../src/utils/helper.js'
44
import { AlgorithmVersion, Options } from '../src/utils/stego-params.js'
55
import { inverseTransform, transform, TransformAlgorithm } from '../src/utils/transform.js'
66
import { Bit, getBit as getBitV2, setBit as setBitV2 } from '../src/v2/bit.js'
7-
import { createAcc } from '../src/v2/position.js'
87

98
export function createOptions(transformAlgorithm: TransformAlgorithm) {
109
return {
@@ -25,9 +24,8 @@ export function encodeBitbyBlock(bit: Bit, block: number[], transformAlgorithm:
2524

2625
export function decodeBitbyBlock(block: number[], transformAlgorithm: TransformAlgorithm, options: Options): Bit {
2726
const im = new Array(options.size * options.size)
28-
const acc = createAcc(options)
2927
transform(block, im.fill(0), transformAlgorithm, options)
30-
return getBitV2(block, acc, options).bit
28+
return getBitV2(block, options).bit
3129
}
3230

3331
export function normalizeBlock(block: number[]) {

0 commit comments

Comments
 (0)