|
@@ -8,12 +8,12 @@ import { ValueCell } from 'mol-util/value-cell'
|
|
|
import { Vec2 } from 'mol-math/linear-algebra'
|
|
|
import { TextureImage, createTextureImage } from 'mol-gl/renderable/util';
|
|
|
|
|
|
-export type FlagData = {
|
|
|
- tFlag: ValueCell<TextureImage>
|
|
|
- uFlagTexSize: ValueCell<Vec2>
|
|
|
+export type MarkerData = {
|
|
|
+ tMarker: ValueCell<TextureImage>
|
|
|
+ uMarkerTexSize: ValueCell<Vec2>
|
|
|
}
|
|
|
|
|
|
-export enum FlagAction {
|
|
|
+export enum MarkerAction {
|
|
|
Highlight,
|
|
|
RemoveHighlight,
|
|
|
Select,
|
|
@@ -22,34 +22,34 @@ export enum FlagAction {
|
|
|
Clear
|
|
|
}
|
|
|
|
|
|
-export function applyFlagAction(array: Uint8Array, start: number, end: number, action: FlagAction) {
|
|
|
+export function applyMarkerAction(array: Uint8Array, start: number, end: number, action: MarkerAction) {
|
|
|
let changed = false
|
|
|
for (let i = start; i < end; ++i) {
|
|
|
let v = array[i]
|
|
|
switch (action) {
|
|
|
- case FlagAction.Highlight:
|
|
|
+ case MarkerAction.Highlight:
|
|
|
if (v % 2 === 0) {
|
|
|
v += 1
|
|
|
changed = true
|
|
|
}
|
|
|
break
|
|
|
- case FlagAction.RemoveHighlight:
|
|
|
+ case MarkerAction.RemoveHighlight:
|
|
|
if (v % 2 !== 0) {
|
|
|
v -= 1
|
|
|
changed = true
|
|
|
}
|
|
|
break
|
|
|
- case FlagAction.Select:
|
|
|
+ case MarkerAction.Select:
|
|
|
v += 2
|
|
|
changed = true
|
|
|
break
|
|
|
- case FlagAction.Deselect:
|
|
|
+ case MarkerAction.Deselect:
|
|
|
if (v >= 2) {
|
|
|
v -= 2
|
|
|
changed = true
|
|
|
}
|
|
|
break
|
|
|
- case FlagAction.ToggleSelect:
|
|
|
+ case MarkerAction.ToggleSelect:
|
|
|
if (v === 0) {
|
|
|
v = 2
|
|
|
} else if (v === 1) {
|
|
@@ -61,7 +61,7 @@ export function applyFlagAction(array: Uint8Array, start: number, end: number, a
|
|
|
}
|
|
|
changed = true
|
|
|
break
|
|
|
- case FlagAction.Clear:
|
|
|
+ case MarkerAction.Clear:
|
|
|
v = 0
|
|
|
changed = true
|
|
|
break
|
|
@@ -71,32 +71,32 @@ export function applyFlagAction(array: Uint8Array, start: number, end: number, a
|
|
|
return changed
|
|
|
}
|
|
|
|
|
|
-export function createFlags(count: number, flagData?: FlagData): FlagData {
|
|
|
- const flags = flagData && flagData.tFlag.ref.value.array.length >= count
|
|
|
- ? flagData.tFlag.ref.value
|
|
|
+export function createMarkers(count: number, markerData?: MarkerData): MarkerData {
|
|
|
+ const markers = markerData && markerData.tMarker.ref.value.array.length >= count
|
|
|
+ ? markerData.tMarker.ref.value
|
|
|
: createTextureImage(count, 1)
|
|
|
- if (flagData) {
|
|
|
- ValueCell.update(flagData.tFlag, flags)
|
|
|
- ValueCell.update(flagData.uFlagTexSize, Vec2.create(flags.width, flags.height))
|
|
|
- return flagData
|
|
|
+ if (markerData) {
|
|
|
+ ValueCell.update(markerData.tMarker, markers)
|
|
|
+ ValueCell.update(markerData.uMarkerTexSize, Vec2.create(markers.width, markers.height))
|
|
|
+ return markerData
|
|
|
} else {
|
|
|
return {
|
|
|
- tFlag: ValueCell.create(flags),
|
|
|
- uFlagTexSize: ValueCell.create(Vec2.create(flags.width, flags.height)),
|
|
|
+ tMarker: ValueCell.create(markers),
|
|
|
+ uMarkerTexSize: ValueCell.create(Vec2.create(markers.width, markers.height)),
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-const emptyFlagTexture = { array: new Uint8Array(1), width: 1, height: 1 }
|
|
|
-export function createEmptyFlags(flagData?: FlagData) {
|
|
|
- if (flagData) {
|
|
|
- ValueCell.update(flagData.tFlag, emptyFlagTexture)
|
|
|
- ValueCell.update(flagData.uFlagTexSize, Vec2.create(1, 1))
|
|
|
- return flagData
|
|
|
+const emptyMarkerTexture = { array: new Uint8Array(1), width: 1, height: 1 }
|
|
|
+export function createEmptyMarkers(markerData?: MarkerData) {
|
|
|
+ if (markerData) {
|
|
|
+ ValueCell.update(markerData.tMarker, emptyMarkerTexture)
|
|
|
+ ValueCell.update(markerData.uMarkerTexSize, Vec2.create(1, 1))
|
|
|
+ return markerData
|
|
|
} else {
|
|
|
return {
|
|
|
- tFlag: ValueCell.create(emptyFlagTexture),
|
|
|
- uFlagTexSize: ValueCell.create(Vec2.create(1, 1)),
|
|
|
+ tMarker: ValueCell.create(emptyMarkerTexture),
|
|
|
+ uMarkerTexSize: ValueCell.create(Vec2.create(1, 1)),
|
|
|
}
|
|
|
}
|
|
|
}
|