Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(115)

Unified Diff: content/common/font_config_ipc_linux.cc

Issue 12764009: re-land 187283 -- switch to skia's version of SkFontHost_fontconfig (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/common/font_config_ipc_linux.h ('k') | content/zygote/zygote_main_linux.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/common/font_config_ipc_linux.cc
===================================================================
--- content/common/font_config_ipc_linux.cc (revision 187566)
+++ content/common/font_config_ipc_linux.cc (working copy)
@@ -12,6 +12,8 @@
#include "base/pickle.h"
#include "base/posix/unix_domain_socket_linux.h"
+#include "skia/ext/skia_utils_base.h"
+#include "third_party/skia/include/core/SkStream.h"
namespace content {
@@ -23,31 +25,21 @@
close(fd_);
}
-bool FontConfigIPC::Match(std::string* result_family,
- unsigned* result_filefaceid,
- bool filefaceid_valid, unsigned filefaceid,
- const std::string& family,
- const void* characters, size_t characters_bytes,
- bool* is_bold, bool* is_italic) {
- if (family.length() > kMaxFontFamilyLength)
+bool FontConfigIPC::matchFamilyName(const char familyName[],
+ SkTypeface::Style requestedStyle,
+ FontIdentity* outFontIdentity,
+ SkString* outFamilyName,
+ SkTypeface::Style* outStyle) {
+ size_t familyNameLen = familyName ? strlen(familyName) : 0;
+ if (familyNameLen > kMaxFontFamilyLength)
return false;
Pickle request;
request.WriteInt(METHOD_MATCH);
- request.WriteBool(filefaceid_valid);
- if (filefaceid_valid)
- request.WriteUInt32(filefaceid);
+ request.WriteData(familyName, familyNameLen);
+ request.WriteUInt32(requestedStyle);
- request.WriteBool(is_bold && *is_bold);
- request.WriteBool(is_bold && *is_italic);
-
- request.WriteUInt32(characters_bytes);
- if (characters_bytes)
- request.WriteBytes(characters, characters_bytes);
-
- request.WriteString(family);
-
- uint8_t reply_buf[512];
+ uint8_t reply_buf[2048];
const ssize_t r = UnixDomainSocket::SendRecvMsg(fd_, reply_buf,
sizeof(reply_buf), NULL,
request);
@@ -62,33 +54,29 @@
if (!result)
return false;
- uint32_t reply_filefaceid;
- std::string reply_family;
- bool resulting_bold, resulting_italic;
- if (!reply.ReadUInt32(&iter, &reply_filefaceid) ||
- !reply.ReadString(&iter, &reply_family) ||
- !reply.ReadBool(&iter, &resulting_bold) ||
- !reply.ReadBool(&iter, &resulting_italic)) {
+ SkString reply_family;
+ FontIdentity reply_identity;
+ uint32_t reply_style;
+ if (!skia::ReadSkString(reply, &iter, &reply_family) ||
+ !skia::ReadSkFontIdentity(reply, &iter, &reply_identity) ||
+ !reply.ReadUInt32(&iter, &reply_style)) {
return false;
}
- if (result_filefaceid)
- *result_filefaceid = reply_filefaceid;
- if (result_family)
- *result_family = reply_family;
+ if (outFontIdentity)
+ *outFontIdentity = reply_identity;
+ if (outFamilyName)
+ *outFamilyName = reply_family;
+ if (outStyle)
+ *outStyle = static_cast<SkTypeface::Style>(reply_style);
- if (is_bold)
- *is_bold = resulting_bold;
- if (is_italic)
- *is_italic = resulting_italic;
-
return true;
}
-int FontConfigIPC::Open(unsigned filefaceid) {
+SkStream* FontConfigIPC::openStream(const FontIdentity& identity) {
Pickle request;
request.WriteInt(METHOD_OPEN);
- request.WriteUInt32(filefaceid);
+ request.WriteUInt32(identity.fID);
int result_fd = -1;
uint8_t reply_buf[256];
@@ -97,7 +85,7 @@
&result_fd, request);
if (r == -1)
- return -1;
+ return NULL;
Pickle reply(reinterpret_cast<char*>(reply_buf), r);
bool result;
@@ -106,10 +94,10 @@
!result) {
if (result_fd)
close(result_fd);
- return -1;
+ return NULL;
}
- return result_fd;
+ return new SkFDStream(result_fd, true);
}
} // namespace content
« no previous file with comments | « content/common/font_config_ipc_linux.h ('k') | content/zygote/zygote_main_linux.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698