correctly update the map dimensions on rotate

refs #37
This commit is contained in:
Konstantin Käfer
2014-04-10 14:07:36 -04:00
parent eb499e77c1
commit 06bcab9560
4 changed files with 21 additions and 5 deletions

View File

@@ -43,7 +43,7 @@ public:
void renderPoint(PointBucket& bucket, const std::string& layer_name, const Tile::ID& id);
void renderText(TextBucket& bucket, const std::string& layer_name, const Tile::ID& id);
void resize(int width, int height);
void resize();
void prepareClippingMask();
void drawClippingMask(const mat4& matrix, uint8_t clip_id, bool opaque = true);

View File

@@ -162,6 +162,22 @@ class MBXMapView
}
}
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAll;
}
-(void)viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
GLKView *view = (GLKView *)self.view;
CGRect rect = [view bounds];
mapView->map.resize(rect.size.width, rect.size.height, [view drawableWidth], [view drawableHeight]);
}
- (void)togglePalette
{
if (self.palette.alpha < 1)

View File

@@ -46,9 +46,9 @@ void Map::loadSettings() {
void Map::resize(uint16_t width, uint16_t height, uint16_t fb_width, uint16_t fb_height) {
transform.resize(width, height, fb_width, fb_height);
painter.resize(fb_width, fb_height);
painter.resize();
if (!style.sprite || style.sprite->pixelRatio) {
if (!style.sprite || style.sprite->pixelRatio != transform.getPixelRatio()) {
style.sprite = std::make_shared<Sprite>(transform.getPixelRatio());
style.sprite->load(kSpriteURL);
}

View File

@@ -74,8 +74,8 @@ void Painter::setupShaders() {
textShader = std::make_unique<TextShader>();
}
void Painter::resize(int width, int height) {
glViewport(0, 0, width, height);
void Painter::resize() {
glViewport(0, 0, transform.getFramebufferWidth(), transform.getFramebufferHeight());
}
void Painter::useProgram(uint32_t program) {