summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Loer <chris.loer@gmail.com>2017-11-28 15:21:40 -0800
committerChris Loer <chris.loer@gmail.com>2017-11-28 15:21:40 -0800
commitbfefc93a3b1f9309f3b403d8a3bed36d62cc416d (patch)
tree317342b889bb9e1def6226e70611656bd5613a8c
parent3114947224fd42013954da6c4cef28d31b1238e7 (diff)
downloadqtlocation-mapboxgl-bfefc93a3b1f9309f3b403d8a3bed36d62cc416d.tar.gz
Change LocalGlyphRasterizer configuration to just a plain "font family" string, plumb it out as far as the Renderer constructor.
-rw-r--r--include/mbgl/renderer/renderer.hpp3
-rw-r--r--platform/darwin/src/local_glyph_rasterizer.mm10
-rw-r--r--platform/macos/src/MGLMapView.mm12
-rw-r--r--src/mbgl/renderer/renderer.cpp5
-rw-r--r--src/mbgl/renderer/renderer_impl.cpp5
-rw-r--r--src/mbgl/renderer/renderer_impl.hpp2
-rw-r--r--src/mbgl/text/glyph_manager.hpp2
-rw-r--r--src/mbgl/text/local_glyph_rasterizer.hpp2
8 files changed, 23 insertions, 18 deletions
diff --git a/include/mbgl/renderer/renderer.hpp b/include/mbgl/renderer/renderer.hpp
index 0937e9334b..db28ee92fc 100644
--- a/include/mbgl/renderer/renderer.hpp
+++ b/include/mbgl/renderer/renderer.hpp
@@ -25,7 +25,8 @@ class Renderer {
public:
Renderer(RendererBackend&, float pixelRatio_, FileSource&, Scheduler&,
GLContextMode = GLContextMode::Unique,
- const optional<std::string> programCacheDir = {});
+ const optional<std::string> programCacheDir = {},
+ const optional<std::string> localFontFamily = {});
~Renderer();
void markContextLost();
diff --git a/platform/darwin/src/local_glyph_rasterizer.mm b/platform/darwin/src/local_glyph_rasterizer.mm
index 44658b7504..f12be78daa 100644
--- a/platform/darwin/src/local_glyph_rasterizer.mm
+++ b/platform/darwin/src/local_glyph_rasterizer.mm
@@ -34,11 +34,13 @@ public:
CTFontRefHandle font;
};
-LocalGlyphRasterizer::LocalGlyphRasterizer(void* configuration)
+LocalGlyphRasterizer::LocalGlyphRasterizer(const optional<std::string> fontFamily)
{
- if (configuration) {
- NSMutableDictionary *fontAttributes = CFBridgingRelease((CFDictionaryRef)configuration);
- fontAttributes[(NSString *)kCTFontSizeAttribute] = [NSNumber numberWithFloat:24.0];
+ if (fontFamily) {
+ NSDictionary *fontAttributes = @{
+ (NSString *)kCTFontSizeAttribute: [NSNumber numberWithFloat:24.0],
+ (NSString *)kCTFontFamilyNameAttribute: [[NSString alloc] initWithCString:fontFamily->c_str() encoding:NSUTF8StringEncoding]
+ };
CTFontDescriptorRefHandle descriptor(CTFontDescriptorCreateWithAttributes((CFDictionaryRef)fontAttributes));
diff --git a/platform/macos/src/MGLMapView.mm b/platform/macos/src/MGLMapView.mm
index 8df6f4545d..b41b7ab0d2 100644
--- a/platform/macos/src/MGLMapView.mm
+++ b/platform/macos/src/MGLMapView.mm
@@ -217,15 +217,15 @@ public:
- (instancetype)initWithFrame:(NSRect)frameRect {
if (self = [super initWithFrame:frameRect]) {
- [self commonInit];
+ [self commonInit:nil];
self.styleURL = nil;
}
return self;
}
-- (instancetype)initWithFrame:(NSRect)frame styleURL:(nullable NSURL *)styleURL {
+- (instancetype)initWithFrame:(NSRect)frame styleURL:(nullable NSURL *)styleURL localIdeographFontFamily:(nullable NSString *)fontFamily {
if (self = [super initWithFrame:frame]) {
- [self commonInit];
+ [self commonInit:fontFamily];
self.styleURL = styleURL;
}
return self;
@@ -233,7 +233,7 @@ public:
- (instancetype)initWithCoder:(nonnull NSCoder *)decoder {
if (self = [super initWithCoder:decoder]) {
- [self commonInit];
+ [self commonInit:nil];
}
return self;
}
@@ -252,7 +252,7 @@ public:
return @[@"camera", @"debugMask"];
}
-- (void)commonInit {
+- (void)commonInit:(nullable NSString*)fontFamily {
_isTargetingInterfaceBuilder = NSProcessInfo.processInfo.mgl_isInterfaceBuilderDesignablesAgent;
// Set up cross-platform controllers and resources.
@@ -274,7 +274,7 @@ public:
_mbglThreadPool = mbgl::sharedThreadPool();
- auto renderer = std::make_unique<mbgl::Renderer>(*_mbglView, [NSScreen mainScreen].backingScaleFactor, *mbglFileSource, *_mbglThreadPool, mbgl::GLContextMode::Unique);
+ auto renderer = std::make_unique<mbgl::Renderer>(*_mbglView, [NSScreen mainScreen].backingScaleFactor, *mbglFileSource, *_mbglThreadPool, mbgl::GLContextMode::Unique, mbgl::optional<std::string>(), fontFamily ? std::string([fontFamily UTF8String]) : mbgl::optional<std::string>());
_rendererFrontend = std::make_unique<MGLRenderFrontend>(std::move(renderer), self, *_mbglView, true);
_mbglMap = new mbgl::Map(*_rendererFrontend, *_mbglView, self.size, [NSScreen mainScreen].backingScaleFactor, *mbglFileSource, *_mbglThreadPool, mbgl::MapMode::Continuous, mbgl::ConstrainMode::None, mbgl::ViewportMode::Default);
diff --git a/src/mbgl/renderer/renderer.cpp b/src/mbgl/renderer/renderer.cpp
index 8953b419f7..6d086c70b1 100644
--- a/src/mbgl/renderer/renderer.cpp
+++ b/src/mbgl/renderer/renderer.cpp
@@ -10,9 +10,10 @@ Renderer::Renderer(RendererBackend& backend,
FileSource& fileSource_,
Scheduler& scheduler_,
GLContextMode contextMode_,
- const optional<std::string> programCacheDir_)
+ const optional<std::string> programCacheDir_,
+ const optional<std::string> localFontFamily_)
: impl(std::make_unique<Impl>(backend, pixelRatio_, fileSource_, scheduler_,
- contextMode_, std::move(programCacheDir_))) {
+ contextMode_, std::move(programCacheDir_), std::move(localFontFamily_))) {
}
Renderer::~Renderer() {
diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp
index aa138df662..4bed0e251b 100644
--- a/src/mbgl/renderer/renderer_impl.cpp
+++ b/src/mbgl/renderer/renderer_impl.cpp
@@ -42,7 +42,8 @@ Renderer::Impl::Impl(RendererBackend& backend_,
FileSource& fileSource_,
Scheduler& scheduler_,
GLContextMode contextMode_,
- const optional<std::string> programCacheDir_)
+ const optional<std::string> programCacheDir_,
+ const optional<std::string> localFontFamily_)
: backend(backend_)
, scheduler(scheduler_)
, fileSource(fileSource_)
@@ -50,7 +51,7 @@ Renderer::Impl::Impl(RendererBackend& backend_,
, contextMode(contextMode_)
, pixelRatio(pixelRatio_)
, programCacheDir(programCacheDir_)
- , glyphManager(std::make_unique<GlyphManager>(fileSource))
+ , glyphManager(std::make_unique<GlyphManager>(fileSource, std::make_unique<LocalGlyphRasterizer>(localFontFamily_)))
, imageManager(std::make_unique<ImageManager>())
, lineAtlas(std::make_unique<LineAtlas>(Size{ 256, 512 }))
, imageImpls(makeMutable<std::vector<Immutable<style::Image::Impl>>>())
diff --git a/src/mbgl/renderer/renderer_impl.hpp b/src/mbgl/renderer/renderer_impl.hpp
index 4f8139791c..5d0200a5df 100644
--- a/src/mbgl/renderer/renderer_impl.hpp
+++ b/src/mbgl/renderer/renderer_impl.hpp
@@ -38,7 +38,7 @@ class Renderer::Impl : public GlyphManagerObserver,
public RenderSourceObserver{
public:
Impl(RendererBackend&, float pixelRatio_, FileSource&, Scheduler&, GLContextMode,
- const optional<std::string> programCacheDir);
+ const optional<std::string> programCacheDir, const optional<std::string> localFontFamily);
~Impl() final;
void markContextLost() {
diff --git a/src/mbgl/text/glyph_manager.hpp b/src/mbgl/text/glyph_manager.hpp
index d9a4e64c1d..d34ec2a61e 100644
--- a/src/mbgl/text/glyph_manager.hpp
+++ b/src/mbgl/text/glyph_manager.hpp
@@ -25,7 +25,7 @@ public:
class GlyphManager : public util::noncopyable {
public:
- GlyphManager(FileSource&, std::unique_ptr<LocalGlyphRasterizer> = std::make_unique<LocalGlyphRasterizer>((void*)NULL));
+ GlyphManager(FileSource&, std::unique_ptr<LocalGlyphRasterizer>);
~GlyphManager();
// Workers send a `getGlyphs` message to the main thread once they have determined
diff --git a/src/mbgl/text/local_glyph_rasterizer.hpp b/src/mbgl/text/local_glyph_rasterizer.hpp
index f43676dfa4..82b16b534d 100644
--- a/src/mbgl/text/local_glyph_rasterizer.hpp
+++ b/src/mbgl/text/local_glyph_rasterizer.hpp
@@ -33,7 +33,7 @@ namespace mbgl {
class LocalGlyphRasterizer {
public:
virtual ~LocalGlyphRasterizer();
- LocalGlyphRasterizer(void* configuration = nullptr);
+ LocalGlyphRasterizer(const optional<std::string> fontFamily = optional<std::string>());
// virtual so that test harness can override platform-specific behavior
virtual bool canRasterizeGlyph(const FontStack&, GlyphID);