mirror of
https://github.com/overte-org/overte.git
synced 2025-08-04 17:00:36 +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
|
||||
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 entity{ new RenderableWebEntityItem(entityID) };
|
||||
entity->setProperties(properties);
|
||||
|
@ -98,6 +100,19 @@ bool RenderableWebEntityItem::buildWebSurface(EntityTreeRenderer* renderer) {
|
|||
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) {
|
||||
checkFading();
|
||||
|
||||
|
@ -123,13 +138,13 @@ void RenderableWebEntityItem::render(RenderArgs* args) {
|
|||
}
|
||||
|
||||
_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
|
||||
// if it's a no-op), so it's safe to just call resize every frame
|
||||
// without worrying about excessive overhead.
|
||||
_webSurface->resize(QSize(dims.x, dims.y));
|
||||
_webSurface->resize(QSize(windowSize.x, windowSize.y));
|
||||
|
||||
PerformanceTimer perfTimer("RenderableWebEntityItem::render");
|
||||
Q_ASSERT(getType() == EntityTypes::Web);
|
||||
|
|
|
@ -47,6 +47,7 @@ public:
|
|||
private:
|
||||
bool buildWebSurface(EntityTreeRenderer* renderer);
|
||||
void destroyWebSurface();
|
||||
glm::vec2 getWindowSize() const;
|
||||
|
||||
OffscreenQmlSurface* _webSurface{ nullptr };
|
||||
QMetaObject::Connection _connection;
|
||||
|
|
|
@ -543,6 +543,10 @@
|
|||
<label for="property-web-source-url">Source URL</label>
|
||||
<input type="text" id="property-web-source-url">
|
||||
</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">
|
||||
|
|
|
@ -427,6 +427,7 @@ function loaded() {
|
|||
var elWebSections = document.querySelectorAll(".web-section");
|
||||
allSections.push(elWebSections);
|
||||
var elWebSourceURL = document.getElementById("property-web-source-url");
|
||||
var elWebDPI = document.getElementById("property-web-dpi");
|
||||
|
||||
var elDescription = document.getElementById("property-description");
|
||||
|
||||
|
@ -706,6 +707,7 @@ function loaded() {
|
|||
}
|
||||
|
||||
elWebSourceURL.value = properties.sourceUrl;
|
||||
elWebDPI.value = properties.dpi;
|
||||
} else if (properties.type == "Text") {
|
||||
for (var i = 0; i < elTextSections.length; i++) {
|
||||
elTextSections[i].style.display = 'table';
|
||||
|
@ -959,6 +961,7 @@ function loaded() {
|
|||
elShape.addEventListener('change', createEmitTextPropertyUpdateFunction('shape'));
|
||||
|
||||
elWebSourceURL.addEventListener('change', createEmitTextPropertyUpdateFunction('sourceUrl'));
|
||||
elWebDPI.addEventListener('change', createEmitNumberPropertyUpdateFunction('dpi'));
|
||||
|
||||
elModelURL.addEventListener('change', createEmitTextPropertyUpdateFunction('modelURL'));
|
||||
elShapeType.addEventListener('change', createEmitTextPropertyUpdateFunction('shapeType'));
|
||||
|
|
Loading…
Reference in a new issue