Only use padding for height layers

This commit is contained in:
Kalle Bladin
2017-08-08 14:02:56 +02:00
parent 2ecfd4d05a
commit 1265de0d50
16 changed files with 173 additions and 151 deletions
@@ -24,7 +24,9 @@
#include <modules/globebrowsing/rendering/layer/layer.h>
#include <modules/globebrowsing/rendering/layer/layermanager.h>
#include <modules/globebrowsing/tile/tileprovider/tileprovider.h>
#include <modules/globebrowsing/tile/tiletextureinitdata.h>
namespace openspace::globebrowsing {
@@ -102,6 +104,10 @@ Layer::Layer(layergroupid::GroupID id, const ghoul::Dictionary& layerDict)
layerDict.getValue(keyEnabled, enabled);
_enabled.setValue(enabled);
TileTextureInitData initData = LayerManager::getTileTextureInitData(_layerGroupId);
_padTilePixelStartOffset = initData.tilePixelStartOffset();
_padTilePixelSizeDifference = initData.tilePixelSizeDifference();
// Initialize settings
ghoul::Dictionary settingsDict;
if (layerDict.getValue(keySettings, settingsDict)) {
@@ -261,6 +267,36 @@ void Layer::update() {
}
}
glm::ivec2 Layer::tilePixelStartOffset() const {
return _padTilePixelStartOffset;
}
glm::ivec2 Layer::tilePixelSizeDifference() const {
return _padTilePixelSizeDifference;
}
glm::vec2 Layer::compensateSourceTextureSampling(glm::vec2 startOffset, glm::vec2 sizeDiff,
glm::uvec2 resolution, glm::vec2 tileUV)
{
glm::vec2 sourceSize = glm::vec2(resolution) + sizeDiff;
glm::vec2 currentSize = glm::vec2(resolution);
glm::vec2 sourceToCurrentSize = currentSize / sourceSize;
tileUV = sourceToCurrentSize * (tileUV - startOffset / sourceSize);
return tileUV;
}
glm::vec2 Layer::TileUvToTextureSamplePosition(const TileUvTransform& uvTransform,
glm::vec2 tileUV, glm::uvec2 resolution)
{
glm::vec2 uv = uvTransform.uvOffset + uvTransform.uvScale * tileUV;
uv = compensateSourceTextureSampling(
tilePixelStartOffset(),
tilePixelSizeDifference(),
resolution,
uv);
return uv;
}
layergroupid::TypeID Layer::parseTypeIdFromDictionary(
const ghoul::Dictionary& initDict) const
{