mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 14:29:03 +02:00
Add dpi to edit.js
Also, cap the maximum webEntity texture size to 4096
This commit is contained in:
parent
31ed378dbf
commit
d607abc8f7
4 changed files with 26 additions and 3 deletions
|
@ -33,6 +33,8 @@ static const uint32_t MAX_CONCURRENT_WEB_VIEWS = 100;
|
||||||
// If a web-view hasn't been rendered for 30 seconds, de-allocate the framebuffer
|
// If a web-view hasn't been rendered for 30 seconds, de-allocate the framebuffer
|
||||||
static uint64_t MAX_NO_RENDER_INTERVAL = 30 * USECS_PER_SECOND;
|
static uint64_t MAX_NO_RENDER_INTERVAL = 30 * USECS_PER_SECOND;
|
||||||
|
|
||||||
|
static int MAX_WINDOW_SIZE = 4096;
|
||||||
|
|
||||||
EntityItemPointer RenderableWebEntityItem::factory(const EntityItemID& entityID, const EntityItemProperties& properties) {
|
EntityItemPointer RenderableWebEntityItem::factory(const EntityItemID& entityID, const EntityItemProperties& properties) {
|
||||||
EntityItemPointer entity{ new RenderableWebEntityItem(entityID) };
|
EntityItemPointer entity{ new RenderableWebEntityItem(entityID) };
|
||||||
entity->setProperties(properties);
|
entity->setProperties(properties);
|
||||||
|
@ -98,6 +100,19 @@ bool RenderableWebEntityItem::buildWebSurface(EntityTreeRenderer* renderer) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
glm::vec2 RenderableWebEntityItem::getWindowSize() const {
|
||||||
|
glm::vec2 dims = glm::vec2(getDimensions());
|
||||||
|
dims *= METERS_TO_INCHES * _dpi;
|
||||||
|
|
||||||
|
// ensure no side is never larger then MAX_WINDOW_SIZE
|
||||||
|
float max = (dims.x > dims.y) ? dims.x : dims.y;
|
||||||
|
if (max > MAX_WINDOW_SIZE) {
|
||||||
|
dims *= MAX_WINDOW_SIZE / max;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dims;
|
||||||
|
}
|
||||||
|
|
||||||
void RenderableWebEntityItem::render(RenderArgs* args) {
|
void RenderableWebEntityItem::render(RenderArgs* args) {
|
||||||
checkFading();
|
checkFading();
|
||||||
|
|
||||||
|
@ -123,13 +138,13 @@ void RenderableWebEntityItem::render(RenderArgs* args) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_lastRenderTime = usecTimestampNow();
|
_lastRenderTime = usecTimestampNow();
|
||||||
glm::vec2 dims = glm::vec2(getDimensions());
|
|
||||||
|
|
||||||
dims *= METERS_TO_INCHES * _dpi;
|
glm::vec2 windowSize = getWindowSize();
|
||||||
|
|
||||||
// The offscreen surface is idempotent for resizes (bails early
|
// The offscreen surface is idempotent for resizes (bails early
|
||||||
// if it's a no-op), so it's safe to just call resize every frame
|
// if it's a no-op), so it's safe to just call resize every frame
|
||||||
// without worrying about excessive overhead.
|
// without worrying about excessive overhead.
|
||||||
_webSurface->resize(QSize(dims.x, dims.y));
|
_webSurface->resize(QSize(windowSize.x, windowSize.y));
|
||||||
|
|
||||||
PerformanceTimer perfTimer("RenderableWebEntityItem::render");
|
PerformanceTimer perfTimer("RenderableWebEntityItem::render");
|
||||||
Q_ASSERT(getType() == EntityTypes::Web);
|
Q_ASSERT(getType() == EntityTypes::Web);
|
||||||
|
|
|
@ -47,6 +47,7 @@ public:
|
||||||
private:
|
private:
|
||||||
bool buildWebSurface(EntityTreeRenderer* renderer);
|
bool buildWebSurface(EntityTreeRenderer* renderer);
|
||||||
void destroyWebSurface();
|
void destroyWebSurface();
|
||||||
|
glm::vec2 getWindowSize() const;
|
||||||
|
|
||||||
OffscreenQmlSurface* _webSurface{ nullptr };
|
OffscreenQmlSurface* _webSurface{ nullptr };
|
||||||
QMetaObject::Connection _connection;
|
QMetaObject::Connection _connection;
|
||||||
|
|
|
@ -543,6 +543,10 @@
|
||||||
<label for="property-web-source-url">Source URL</label>
|
<label for="property-web-source-url">Source URL</label>
|
||||||
<input type="text" id="property-web-source-url">
|
<input type="text" id="property-web-source-url">
|
||||||
</div>
|
</div>
|
||||||
|
<div class="web-group web-section property dpi ">
|
||||||
|
<label for="property-web-dpi">Resolution (DPI)</label>
|
||||||
|
<input type="number" id="property-web-dpi">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="section-header light-group light-section">
|
<div class="section-header light-group light-section">
|
||||||
|
|
|
@ -427,6 +427,7 @@ function loaded() {
|
||||||
var elWebSections = document.querySelectorAll(".web-section");
|
var elWebSections = document.querySelectorAll(".web-section");
|
||||||
allSections.push(elWebSections);
|
allSections.push(elWebSections);
|
||||||
var elWebSourceURL = document.getElementById("property-web-source-url");
|
var elWebSourceURL = document.getElementById("property-web-source-url");
|
||||||
|
var elWebDPI = document.getElementById("property-web-dpi");
|
||||||
|
|
||||||
var elDescription = document.getElementById("property-description");
|
var elDescription = document.getElementById("property-description");
|
||||||
|
|
||||||
|
@ -706,6 +707,7 @@ function loaded() {
|
||||||
}
|
}
|
||||||
|
|
||||||
elWebSourceURL.value = properties.sourceUrl;
|
elWebSourceURL.value = properties.sourceUrl;
|
||||||
|
elWebDPI.value = properties.dpi;
|
||||||
} else if (properties.type == "Text") {
|
} else if (properties.type == "Text") {
|
||||||
for (var i = 0; i < elTextSections.length; i++) {
|
for (var i = 0; i < elTextSections.length; i++) {
|
||||||
elTextSections[i].style.display = 'table';
|
elTextSections[i].style.display = 'table';
|
||||||
|
@ -959,6 +961,7 @@ function loaded() {
|
||||||
elShape.addEventListener('change', createEmitTextPropertyUpdateFunction('shape'));
|
elShape.addEventListener('change', createEmitTextPropertyUpdateFunction('shape'));
|
||||||
|
|
||||||
elWebSourceURL.addEventListener('change', createEmitTextPropertyUpdateFunction('sourceUrl'));
|
elWebSourceURL.addEventListener('change', createEmitTextPropertyUpdateFunction('sourceUrl'));
|
||||||
|
elWebDPI.addEventListener('change', createEmitNumberPropertyUpdateFunction('dpi'));
|
||||||
|
|
||||||
elModelURL.addEventListener('change', createEmitTextPropertyUpdateFunction('modelURL'));
|
elModelURL.addEventListener('change', createEmitTextPropertyUpdateFunction('modelURL'));
|
||||||
elShapeType.addEventListener('change', createEmitTextPropertyUpdateFunction('shapeType'));
|
elShapeType.addEventListener('change', createEmitTextPropertyUpdateFunction('shapeType'));
|
||||||
|
|
Loading…
Reference in a new issue