vue-cesium
Version:
Vue 3.x components for CesiumJS.
45 lines (43 loc) • 2.01 kB
JavaScript
class TimelineTrack {
constructor(interval, pixelHeight, color, backgroundColor) {
const { Color } = Cesium;
this.interval = interval;
this.height = pixelHeight;
this.color = color || new Color(0.5, 0.5, 0.5, 1);
this.backgroundColor = backgroundColor || new Color(0, 0, 0, 0);
}
render(context, renderState) {
const { JulianDate, defined } = Cesium;
const startInterval = this.interval.start;
const stopInterval = this.interval.stop;
const spanStart = renderState.startJulian;
const spanStop = JulianDate.addSeconds(renderState.startJulian, renderState.duration, new JulianDate());
if (JulianDate.lessThan(startInterval, spanStart) && JulianDate.greaterThan(stopInterval, spanStop)) {
context.fillStyle = this.color.toCssColorString();
context.fillRect(0, renderState.y, renderState.timeBarWidth, this.height);
} else if (JulianDate.lessThanOrEquals(startInterval, spanStop) && JulianDate.greaterThanOrEquals(stopInterval, spanStart)) {
let x;
let start, stop;
for (x = 0; x < renderState.timeBarWidth; ++x) {
const currentTime = JulianDate.addSeconds(renderState.startJulian, x / renderState.timeBarWidth * renderState.duration, new JulianDate());
if (!defined(start) && JulianDate.greaterThanOrEquals(currentTime, startInterval)) {
start = x;
} else if (!defined(stop) && JulianDate.greaterThanOrEquals(currentTime, stopInterval)) {
stop = x;
}
}
context.fillStyle = this.backgroundColor.toCssColorString();
context.fillRect(0, renderState.y, renderState.timeBarWidth, this.height);
if (defined(start)) {
if (!defined(stop)) {
stop = renderState.timeBarWidth;
}
context.fillStyle = this.color.toCssColorString();
context.fillRect(start, renderState.y, Math.max(stop - start, 1), this.height);
}
}
}
}
export { TimelineTrack as default };
//# sourceMappingURL=TimelineTrack.mjs.map
;