Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* libs/graphics/ports/SkFontHost_fontconfig.cpp | 1 /* libs/graphics/ports/SkFontHost_fontconfig.cpp |
| 2 ** | 2 ** |
| 3 ** Copyright 2008, Google Inc. | 3 ** Copyright 2008, Google Inc. |
| 4 ** | 4 ** |
| 5 ** Licensed under the Apache License, Version 2.0 (the "License"); | 5 ** Licensed under the Apache License, Version 2.0 (the "License"); |
| 6 ** you may not use this file except in compliance with the License. | 6 ** you may not use this file except in compliance with the License. |
| 7 ** You may obtain a copy of the License at | 7 ** You may obtain a copy of the License at |
| 8 ** | 8 ** |
| 9 ** http://www.apache.org/licenses/LICENSE-2.0 | 9 ** http://www.apache.org/licenses/LICENSE-2.0 |
| 10 ** | 10 ** |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 236 return 0; | 236 return 0; |
| 237 } | 237 } |
| 238 | 238 |
| 239 /////////////////////////////////////////////////////////////////////////////// | 239 /////////////////////////////////////////////////////////////////////////////// |
| 240 | 240 |
| 241 class SkFileDescriptorStream : public SkStream { | 241 class SkFileDescriptorStream : public SkStream { |
| 242 public: | 242 public: |
| 243 SkFileDescriptorStream(int fd) { | 243 SkFileDescriptorStream(int fd) { |
| 244 memory_ = NULL; | 244 memory_ = NULL; |
| 245 offset_ = 0; | 245 offset_ = 0; |
| 246 length_ = 0; | |
|
bungeman-skia
2011/12/05 21:02:45
This is following the existing convention, but sho
| |
| 246 | 247 |
| 247 struct stat st; | 248 struct stat st; |
| 248 if (fstat(fd, &st)) | 249 if (fstat(fd, &st)) |
| 249 return; | 250 return; |
| 250 | 251 |
| 251 void* memory = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0); | 252 void* memory = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0); |
| 252 close(fd); | 253 close(fd); |
| 253 if (memory == MAP_FAILED) | 254 if (memory == MAP_FAILED) |
| 254 return; | 255 return; |
| 255 | 256 |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 266 return true; | 267 return true; |
| 267 } | 268 } |
| 268 | 269 |
| 269 // SkStream implementation. | 270 // SkStream implementation. |
| 270 virtual size_t read(void* buffer, size_t size) { | 271 virtual size_t read(void* buffer, size_t size) { |
| 271 if (!buffer && !size) { | 272 if (!buffer && !size) { |
| 272 // This is request for the length of the stream. | 273 // This is request for the length of the stream. |
| 273 return length_; | 274 return length_; |
| 274 } | 275 } |
| 275 | 276 |
| 276 if (!buffer) { | |
| 277 // This is a request to skip bytes. | |
| 278 if (offset_ + size < offset_) | |
| 279 return offset_; | |
| 280 offset_ += size; | |
| 281 if (offset_ > length_) | |
| 282 offset_ = length_; | |
| 283 return offset_; | |
| 284 } | |
| 285 | |
| 286 size_t remaining = length_ - offset_; | 277 size_t remaining = length_ - offset_; |
| 287 if (size > remaining) | 278 if (size > remaining) |
| 288 size = remaining; | 279 size = remaining; |
| 289 memcpy(buffer, memory_ + offset_, size); | 280 if (buffer) |
| 281 memcpy(buffer, memory_ + offset_, size); | |
| 282 | |
| 290 offset_ += size; | 283 offset_ += size; |
| 291 return size; | 284 return size; |
| 292 } | 285 } |
| 293 | 286 |
| 294 virtual const void* getMemoryBase() { | 287 virtual const void* getMemoryBase() { |
| 295 return memory_; | 288 return memory_; |
| 296 } | 289 } |
| 297 | 290 |
| 298 private: | 291 private: |
| 299 const uint8_t* memory_; | 292 const uint8_t* memory_; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 343 if (!path) | 336 if (!path) |
| 344 return 1; | 337 return 1; |
| 345 } | 338 } |
| 346 | 339 |
| 347 if (path) | 340 if (path) |
| 348 SkASSERT(!"SkFontHost::GetFileName does not support the font path " | 341 SkASSERT(!"SkFontHost::GetFileName does not support the font path " |
| 349 "retrieval."); | 342 "retrieval."); |
| 350 | 343 |
| 351 return 0; | 344 return 0; |
| 352 } | 345 } |
| OLD | NEW |