diff options
Diffstat (limited to 'vcl/ios')
-rw-r--r-- | vcl/ios/source/gdi/salcoretextfontutils.cxx | 613 | ||||
-rw-r--r-- | vcl/ios/source/gdi/salcoretextlayout.cxx | 481 | ||||
-rw-r--r-- | vcl/ios/source/gdi/salcoretextstyle.cxx | 120 | ||||
-rw-r--r-- | vcl/ios/source/gdi/salgdi.cxx | 263 | ||||
-rw-r--r-- | vcl/ios/source/gdi/salgdicommon.cxx | 102 | ||||
-rw-r--r-- | vcl/ios/source/gdi/salgdiutils.cxx | 26 | ||||
-rw-r--r-- | vcl/ios/source/gdi/salnativewidgets.cxx | 18 | ||||
-rw-r--r-- | vcl/ios/source/gdi/salvd.cxx | 10 | ||||
-rw-r--r-- | vcl/ios/source/window/salframe.cxx | 4 | ||||
-rw-r--r-- | vcl/ios/source/window/salframeview.mm | 4 |
10 files changed, 82 insertions, 1559 deletions
diff --git a/vcl/ios/source/gdi/salcoretextfontutils.cxx b/vcl/ios/source/gdi/salcoretextfontutils.cxx deleted file mode 100644 index 3175d0816d23..000000000000 --- a/vcl/ios/source/gdi/salcoretextfontutils.cxx +++ /dev/null @@ -1,613 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#include "ios/common.h" - -#include "ios/salcoretextfontutils.hxx" -#include "ios/salgdi.h" - -#include "sft.hxx" -#include "ios/salinst.h" - - -static bool GetDevFontAttributes( CTFontDescriptorRef font_descriptor, ImplDevFontAttributes& rDFA ) -{ - int value = 0; - - // reset the attributes - rDFA.SetFamilyType( FAMILY_DONTKNOW ); - rDFA.SetPitch( PITCH_VARIABLE ); - rDFA.SetWidthType( WIDTH_NORMAL ); - rDFA.SetWeight( WEIGHT_NORMAL ); - rDFA.SetItalic( ITALIC_NONE ); - rDFA.SetSymbolFlag( false ); - rDFA.mbOrientation = true; - rDFA.mbDevice = true; - rDFA.mnQuality = 0; - - CFNumberRef format = (CFNumberRef)CTFontDescriptorCopyAttribute(font_descriptor, kCTFontFormatAttribute); - CFNumberGetValue(format, kCFNumberIntType, &value); - CFRelease(format); - - if(value == kCTFontFormatBitmap) - { - /* we don't want bitmap fonts */ - return false; - } - rDFA.mbSubsettable = true; - rDFA.mbEmbeddable = false; - - CFStringRef family_name = (CFStringRef)CTFontDescriptorCopyAttribute(font_descriptor, kCTFontFamilyNameAttribute); - rDFA.SetFamilyName( GetOUString(family_name) ); - CFRelease(family_name); - - CFDictionaryRef traits = (CFDictionaryRef)CTFontDescriptorCopyAttribute(font_descriptor, kCTFontTraitsAttribute); - CFNumberRef symbolics = (CFNumberRef)CFDictionaryGetValue(traits, kCTFontSymbolicTrait); - CFNumberGetValue(symbolics, kCFNumberIntType, &value); - CFRelease(symbolics); - - if(value & kCTFontMonoSpaceTrait) - { - rDFA.SetPitch( PITCH_FIXED ); - } - - if(value & kCTFontItalicTrait) - { - rDFA.SetItalic( ITALIC_NORMAL ); - } - - if(value & kCTFontBoldTrait) - { - rDFA.SetWeight( WEIGHT_BOLD ); - } - - if(value & kCTFontCondensedTrait) - { - rDFA.SetWidthType( WIDTH_CONDENSED ); - } - else if(value & kCTFontExpandedTrait) - { - rDFA.SetWidthType( WIDTH_EXPANDED ); - } - switch(value & kCTFontClassMaskTrait) - { - case kCTFontOldStyleSerifsClass: - rDFA.SetFamilyType( FAMILY_ROMAN ); - break; - case kCTFontTransitionalSerifsClass: - case kCTFontModernSerifsClass: - case kCTFontClarendonSerifsClass: - case kCTFontSlabSerifsClass: - case kCTFontFreeformSerifsClass: - break; - case kCTFontSansSerifClass: - rDFA.SetFamilyType( FAMILY_SWISS ); - case kCTFontOrnamentalsClass: - rDFA.SetFamilyType( FAMILY_DECORATIVE ); - break; - case kCTFontScriptsClass: - rDFA.SetFamilyType( FAMILY_SCRIPT ); - break; - case kCTFontSymbolicClass: - rDFA.SetSymbolFlag( true ); - break; - } - - CFNumberRef weight = (CFNumberRef)CFDictionaryGetValue(traits, kCTFontWeightTrait); - float fdval = 0.0; - CFNumberGetValue(weight, kCFNumberFloatType, &fdval); - if(fdval > 0.6) - { - rDFA.SetWeight( WEIGHT_BLACK ); - } - else if(fdval > 0.4) - { - rDFA.SetWeight( WEIGHT_ULTRABOLD ); - } - else if (fdval > 0.3) - { - rDFA.SetWeight( WEIGHT_BOLD ); - } - else if (fdval > 0.0) - { - rDFA.SetWeight( WEIGHT_SEMIBOLD ); - } - else if (fdval <= -0.8) - { - rDFA.SetWeight( WEIGHT_ULTRALIGHT ); - } - else if (fdval <= -0.4) - { - rDFA.SetWeight( WEIGHT_LIGHT ); - } - else if (fdval <= -0.3) - { - rDFA.SetWeight( WEIGHT_SEMILIGHT ); - } - else if (fdval <= -0.2) - { - rDFA.SetWeight( WEIGHT_THIN ); - } - else - { - rDFA.SetWeight( WEIGHT_NORMAL ); - } - - CFStringRef string_ref = (CFStringRef)CTFontDescriptorCopyAttribute(font_descriptor, kCTFontStyleNameAttribute); - rtl::OUString font_name = GetOUString(string_ref); - rtl::OUString font_name_lc(font_name.toAsciiLowerCase()); - CFRelease(string_ref); - - // heuristics to adjust font slant - if( (font_name_lc.indexOf("oblique") != -1) || - (font_name_lc.indexOf("inclined") != -1) || - (font_name_lc.indexOf("slanted") != -1) ) - { - rDFA.SetItalic( ITALIC_OBLIQUE ); - } - - // heuristics to adjust font width - if (font_name_lc.indexOf("narrow") != -1) - { - rDFA.SetWidthType( WIDTH_SEMI_CONDENSED ); - } - - // heuristics for font family type - if( (font_name_lc.indexOf("script") != -1) || - (font_name_lc.indexOf("chancery") != -1) || - (font_name_lc.indexOf("zapfino") != -1)) - { - rDFA.SetFamilyType( FAMILY_SCRIPT ); - } - else if( (font_name_lc.indexOf("comic") != -1) || - (font_name_lc.indexOf("outline") != -1) || - (font_name_lc.indexOf("pinpoint") != -1) ) - { - rDFA.SetFamilyType( FAMILY_DECORATIVE ); - } - else if( (font_name_lc.indexOf("sans") != -1) || - (font_name_lc.indexOf("arial") != -1) ) - { - rDFA.SetFamilyType( FAMILY_SWISS ); - } - else if( (font_name_lc.indexOf("roman") != -1) || - (font_name_lc.indexOf("times") != -1) ) - { - rDFA.SetFamilyType( FAMILY_ROMAN ); - } - return true; -} - -SystemFontList::SystemFontList() -{ - CTFontCollectionRef font_collection = CTFontCollectionCreateFromAvailableFonts(NULL); - if(font_collection) - { - CFArrayRef font_descriptors = CTFontCollectionCreateMatchingFontDescriptors(font_collection); - - if(font_descriptors) - { - for(int i = 0; i < CFArrayGetCount(font_descriptors); i++) - { - CTFontDescriptorRef font_descriptor = (CTFontDescriptorRef)CFArrayGetValueAtIndex(font_descriptors, i); - CTFontRef font = CTFontCreateWithFontDescriptor(font_descriptor, 0, NULL); - if(font) - { - ImplDevFontAttributes devfont_attr; - if(GetDevFontAttributes( font_descriptor, devfont_attr ) ) - { - CoreTextPhysicalFontFace* font_face = new CoreTextPhysicalFontFace(devfont_attr, font); - if(font_face && font_face->GetCTFont()) - { - m_aFontContainer [ font_face->GetCTFont() ] = font_face; - } - } - CFRelease(font); - } - } - CFRelease(font_descriptors); - } - CFRelease(font_collection); - } - -} - -SystemFontList::~SystemFontList() -{ - CoreTextFontContainer::const_iterator it = m_aFontContainer.begin(); - for(; it != m_aFontContainer.end(); ++it ) - delete (*it).second; - m_aFontContainer.clear(); -} - -CoreTextPhysicalFontFace* SystemFontList::GetFontDataFromRef( CTFontRef font ) const -{ - CoreTextFontContainer::const_iterator it = m_aFontContainer.find( font ); - return it == m_aFontContainer.end() ? NULL : (*it).second; -} - - -void SystemFontList::AnnounceFonts( ImplDevFontList& rFontList ) const -{ - CoreTextFontContainer::const_iterator it = m_aFontContainer.begin(); - for(; it != m_aFontContainer.end(); ++it ) - { - rFontList.Add( (*it).second->Clone() ); - } -} - -CoreTextPhysicalFontFace::CoreTextPhysicalFontFace( const ImplDevFontAttributes& rDFA, CTFontRef font ) -: PhysicalFontFace( rDFA, 0 ) -, m_CTFontRef((CTFontRef)CFRetain(font)) -, m_pCharMap( NULL ) -, m_bHasOs2Table( false ) -, m_bOs2TableRead( false ) -, m_bCmapTableRead( false ) -, m_bHasCJKSupport( false ) -, m_bFontCapabilitiesRead( false ) -{ - SAL_INFO( "vcl.coretext.font", "retain " << font << " as " << m_CTFontRef ); -} - -CoreTextPhysicalFontFace::~CoreTextPhysicalFontFace() -{ - if( m_pCharMap ) - { - m_pCharMap->DeReference(); - } - SAL_INFO( "vcl.coretext.font", "release " << m_CTFontRef ); - SafeCFRelease(m_CTFontRef); -} - -PhysicalFontFace* CoreTextPhysicalFontFace::Clone() const -{ - CoreTextPhysicalFontFace* pClone = new CoreTextPhysicalFontFace(*this); - if( m_pCharMap ) - { - m_pCharMap->AddReference(); - } - if( m_CTFontRef ) - { - pClone->m_CTFontRef = (CTFontRef)CFRetain(m_CTFontRef); - SAL_INFO( "vcl.coretext.font", "clone " << m_CTFontRef << " into " << pClone->m_CTFontRef ); - } - return pClone; -} - -ImplFontEntry* CoreTextPhysicalFontFace::CreateFontInstance(FontSelectPattern& rFSD) const -{ - return new ImplFontEntry(rFSD); -} - -const ImplFontCharMap* CoreTextPhysicalFontFace::GetImplFontCharMap() -{ - // return the cached charmap - if( m_pCharMap ) - { - return m_pCharMap; - } - // set the default charmap - m_pCharMap = ImplFontCharMap::GetDefaultMap(); - m_pCharMap->AddReference(); - - // get the CMAP byte size - CFDataRef rCmapTable = CTFontCopyTable( m_CTFontRef, kCTFontTableCmap, kCTFontTableOptionNoOptions); - if(!rCmapTable) - { - return m_pCharMap; - } - if(!m_bCmapTableRead) - { - m_bCmapTableRead = true; - DetermineCJKSupport_cmap(rCmapTable); - } - // parse the CMAP - CmapResult aCmapResult; - if(ParseCMAP( CFDataGetBytePtr(rCmapTable), CFDataGetLength(rCmapTable), aCmapResult ) ) - { - m_pCharMap = new ImplFontCharMap( aCmapResult ); - m_pCharMap->AddReference(); - } - CFRelease(rCmapTable); - return m_pCharMap; -} - -bool CoreTextPhysicalFontFace::GetImplFontCapabilities(vcl::FontCapabilities &rFontCapabilities) -{ - // read this only once per font - if( m_bFontCapabilitiesRead ) - { - rFontCapabilities = m_aFontCapabilities; - return !rFontCapabilities.maUnicodeRange.empty() || !rFontCapabilities.maCodePageRange.empty(); - } - m_bFontCapabilitiesRead = true; - - // get the GSUB table raw data - CFDataRef rGSUBTable = CTFontCopyTable( m_CTFontRef, kCTFontTableGSUB, kCTFontTableOptionNoOptions); - if(rGSUBTable) - { - - vcl::getTTScripts(m_aFontCapabilities.maGSUBScriptTags, - CFDataGetBytePtr(rGSUBTable), CFDataGetLength(rGSUBTable)); - CFRelease(rGSUBTable); - } - CFDataRef OS2_Table = CTFontCopyTable( m_CTFontRef, kCTFontTableOS2, kCTFontTableOptionNoOptions); - if(OS2_Table) - { - vcl::getTTCoverage( - m_aFontCapabilities.maUnicodeRange, - m_aFontCapabilities.maCodePageRange, - CFDataGetBytePtr(OS2_Table), CFDataGetLength(OS2_Table)); - /* while we are at it let's solve HasCJK for the same price */ - if(!m_bOs2TableRead ) - { - m_bOs2TableRead = true; - m_bHasOs2Table = true; - DetermineCJKSupport_OS2(OS2_Table); - } - CFRelease(OS2_Table); - } - rFontCapabilities = m_aFontCapabilities; - return !rFontCapabilities.maUnicodeRange.empty() || !rFontCapabilities.maCodePageRange.empty(); -} - -struct font_table -{ - unsigned char* table; - unsigned char* dir_entry; - unsigned char* cursor; -}; - -void addTable(struct font_table* table, CTFontTableTag tag, CFDataRef data) -{ - if(data && CFDataGetLength(data) > 0) - { - *(uint32_t*)table->dir_entry = CFSwapInt32HostToBig(tag); - table->dir_entry += 4; - *(uint32_t*)table->dir_entry = 0; /* TODO: checksum */ - table->dir_entry += 4; - *(uint32_t*)table->dir_entry = CFSwapInt32HostToBig((uint32_t)((uintptr_t)table->cursor - (uintptr_t)table)); - table->dir_entry += 4; - *(uint32_t*)table->dir_entry = CFSwapInt32HostToBig(CFDataGetLength(data)); - table->dir_entry += 4; - - memcpy(table->cursor, CFDataGetBytePtr(data), CFDataGetLength(data)); - table->cursor += CFDataGetLength(data); - } -} - -bool CoreTextPhysicalFontFace::GetRawFontData( std::vector<unsigned char>& rBuffer, bool* pJustCFF ) const -{ - bool rc; - int table_count = 0; - - CFDataRef CFF_table = CTFontCopyTable( m_CTFontRef, kCTFontTableCFF, kCTFontTableOptionNoOptions); - if(pJustCFF) - { - if(CFF_table) - { - *pJustCFF = CFDataGetLength(CFF_table) ? true : false; - CFRelease(CFF_table); - return true; - } - else - { - return false; - } - } - size_t total_len = 0; - CFDataRef head_table = CTFontCopyTable( m_CTFontRef, kCTFontTableHead, kCTFontTableOptionNoOptions); - CFDataRef maxp_table = CTFontCopyTable( m_CTFontRef, kCTFontTableMaxp, kCTFontTableOptionNoOptions); - CFDataRef cmap_table = CTFontCopyTable( m_CTFontRef, kCTFontTableHead, kCTFontTableOptionNoOptions); - CFDataRef name_table = CTFontCopyTable( m_CTFontRef, kCTFontTableName, kCTFontTableOptionNoOptions); - CFDataRef hhea_table = CTFontCopyTable( m_CTFontRef, kCTFontTableHhea, kCTFontTableOptionNoOptions); - CFDataRef hmtx_table = CTFontCopyTable( m_CTFontRef, kCTFontTableHmtx, kCTFontTableOptionNoOptions); - rc = false; - if(head_table && maxp_table && cmap_table && name_table && hhea_table && hmtx_table) - { - if(CFDataGetLength(head_table) && - CFDataGetLength(maxp_table) && - CFDataGetLength(name_table) && - CFDataGetLength(hhea_table) && - CFDataGetLength(hmtx_table)) - { - table_count += 6; - total_len = CFDataGetLength(head_table) + - CFDataGetLength(maxp_table) + - CFDataGetLength(name_table) + - CFDataGetLength(hhea_table) + - CFDataGetLength(hmtx_table); - rc = true; - } - } - - CFDataRef loca_table = NULL; - CFDataRef glyf_table = NULL; - CFDataRef prep_table = NULL; - CFDataRef cvt_table = NULL; - CFDataRef fpgm_table = NULL; - if(rc) - { - if(!CFF_table || CFDataGetLength(CFF_table) == 0) - { - loca_table = CTFontCopyTable( m_CTFontRef, kCTFontTableLoca, kCTFontTableOptionNoOptions); - glyf_table = CTFontCopyTable( m_CTFontRef, kCTFontTableGlyf, kCTFontTableOptionNoOptions); - if(!loca_table || !glyf_table || !CFDataGetLength(loca_table) || !CFDataGetLength(glyf_table)) - { - rc = false; - } - else - { - table_count += 2; - total_len += CFDataGetLength(loca_table) + CFDataGetLength(glyf_table); - prep_table = CTFontCopyTable( m_CTFontRef, kCTFontTablePrep, kCTFontTableOptionNoOptions); - cvt_table = CTFontCopyTable( m_CTFontRef, kCTFontTableCvt, kCTFontTableOptionNoOptions); - fpgm_table = CTFontCopyTable( m_CTFontRef, kCTFontTableFpgm, kCTFontTableOptionNoOptions); - if(prep_table || CFDataGetLength(prep_table) > 0) - { - table_count += 1; - total_len += CFDataGetLength(prep_table); - } - if(cvt_table || CFDataGetLength(cvt_table) > 0) - { - table_count += 1; - total_len += CFDataGetLength(cvt_table); - } - if(fpgm_table || CFDataGetLength(fpgm_table) > 0) - { - table_count += 1; - total_len += CFDataGetLength(fpgm_table); - } - } - } - else - { - table_count += 1; - total_len += CFDataGetLength(CFF_table); - } - } - if(rc) - { - total_len += 12 + 16 * table_count; - rBuffer.resize(total_len); - struct font_table table; - unsigned char* cursor = &rBuffer[0]; - int nLog2 = 0; - - while( (table_count >> nLog2) > 1 ) ++nLog2; - - table.table = cursor; - *(uint16_t*)cursor = CFSwapInt16HostToBig(1); - cursor += 2; - *(uint16_t*)cursor = 0; - cursor += 2; - *(uint16_t*)cursor = CFSwapInt16HostToBig(table_count); - cursor += 2; - *(uint16_t*)cursor = CFSwapInt16HostToBig(nLog2 * 16); - cursor += 2; - *(uint16_t*)cursor = CFSwapInt16HostToBig(nLog2); - cursor += 2; - *(uint16_t*)cursor = CFSwapInt16HostToBig((table_count - nLog2) * 16); // rangeShift - cursor += 2; - table.dir_entry = cursor; - cursor += (16 * table_count); - table.cursor = cursor; - addTable(&table, kCTFontTableCmap, cmap_table); - addTable(&table, kCTFontTableCvt, cvt_table); - addTable(&table, kCTFontTableFpgm, fpgm_table); - addTable(&table, kCTFontTableCFF, CFF_table); - addTable(&table, kCTFontTableGlyf, glyf_table); - addTable(&table, kCTFontTableLoca, loca_table); - addTable(&table, kCTFontTableHead, head_table); - addTable(&table, kCTFontTableHhea, hhea_table); - addTable(&table, kCTFontTableHmtx, hmtx_table); - addTable(&table, kCTFontTableMaxp, maxp_table); - addTable(&table, kCTFontTableName, name_table); - addTable(&table, kCTFontTablePrep, prep_table); - } - SafeCFRelease(cmap_table); - SafeCFRelease(cvt_table); - SafeCFRelease(fpgm_table); - SafeCFRelease(CFF_table); - SafeCFRelease(glyf_table); - SafeCFRelease(loca_table); - SafeCFRelease(head_table); - SafeCFRelease(hhea_table); - SafeCFRelease(hmtx_table); - SafeCFRelease(maxp_table); - SafeCFRelease(name_table); - SafeCFRelease(prep_table); - - return rc; -} - -void CoreTextPhysicalFontFace::DetermineCJKSupport_OS2(CFDataRef rOS2Table) -{ - if(CFDataGetLength(rOS2Table) >= 48) - { - const unsigned short* pOS2buffer = (const unsigned short*)CFDataGetBytePtr(rOS2Table); - const unsigned short version = CFSwapInt16BigToHost(pOS2buffer[0]); - if( version >= 1) - { - const unsigned short unicode_range = CFSwapInt16BigToHost(pOS2buffer[23]); - if( unicode_range & 0x2DF0) - { - m_bHasCJKSupport = true; - } - } - } -} - -void CoreTextPhysicalFontFace::DetermineCJKSupport_cmap(CFDataRef rCmapTable) -{ - int table_len = CFDataGetLength(rCmapTable) / 2; - if(table_len >= 12) - { - const unsigned short* pCmap = (const unsigned short*)CFDataGetBytePtr(rCmapTable); - if(pCmap[0] == 0) - { - short nb_sub_tables = CFSwapInt16BigToHost(pCmap[1]); - for(int i = 2; --nb_sub_tables >= 0 && i < table_len; i += 4) - { - short platform = CFSwapInt16BigToHost(pCmap[i]); - if( platform == kFontMacintoshPlatform ) - { - short encoding = CFSwapInt16BigToHost(pCmap[i+1]); - if( encoding == kFontJapaneseScript || - encoding == kFontTraditionalChineseScript || - encoding == kFontKoreanScript || - encoding == kFontSimpleChineseScript ) - { - m_bHasCJKSupport = true; - break; - } - } - } - } - } -} - -bool CoreTextPhysicalFontFace::HasCJKSupport( void ) -{ - // read this only once per font - if(!m_bOs2TableRead ) - { - m_bOs2TableRead = true; - CFDataRef rOS2Table = CTFontCopyTable( m_CTFontRef, kCTFontTableOS2, kCTFontTableOptionNoOptions); - if(rOS2Table) - { - m_bHasOs2Table = true; - DetermineCJKSupport_OS2(rOS2Table); - CFRelease(rOS2Table); - } - } - if( !m_bCmapTableRead && !m_bHasOs2Table && !m_bHasCJKSupport ) - { - m_bCmapTableRead = true; - CFDataRef rCmapTable = CTFontCopyTable( m_CTFontRef, kCTFontTableCmap, kCTFontTableOptionNoOptions); - if(rCmapTable) - { - DetermineCJKSupport_cmap(rCmapTable); - CFRelease(rCmapTable); - } - } - return m_bHasCJKSupport; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/ios/source/gdi/salcoretextlayout.cxx b/vcl/ios/source/gdi/salcoretextlayout.cxx deleted file mode 100644 index 8f9d550c0513..000000000000 --- a/vcl/ios/source/gdi/salcoretextlayout.cxx +++ /dev/null @@ -1,481 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#include "ios/common.h" -#include "ios/salcoretextstyle.hxx" -#include "ios/salcoretextlayout.hxx" -#include "ios/salgdi.h" - - -CoreTextLayout::CoreTextLayout(IosSalGraphics* graphics, CoreTextStyleInfo* style) : - m_graphics(graphics), - m_style(style), - m_glyphs_count(-1), - m_chars_count(-1), - m_chars2glyphs(NULL), - m_glyphs2chars(NULL), - m_glyphs(NULL), - m_char_widths(NULL), - m_glyph_advances(NULL), - m_glyph_positions(NULL), - m_typesetter(NULL), - m_line(NULL), - m_has_bound_rec(false), - m_base_advance(0), - m_cached_width(0.0F), - m_current_run_index(0), - m_current_glyph_index(0), - m_current_glyphrun_index(0), - m_runs(NULL) -{ -} - -CoreTextLayout::~CoreTextLayout() -{ - Clean(); -} - -void CoreTextLayout::AdjustLayout( ImplLayoutArgs& /*rArgs*/ ) -{ - SAL_INFO( "vcl.coretext.layout", "-->" ); - SAL_INFO( "vcl.coretext.layout", "<--" ); - /* TODO */ -} - -void CoreTextLayout::Clean() -{ - SAL_INFO( "vcl.coretext.layout", "-->" ); - if(m_glyphs) - { - delete[] m_glyphs; - m_glyphs = NULL; - } - if(m_chars2glyphs) - { - delete[] m_chars2glyphs; - m_chars2glyphs = NULL; - } - if(m_glyphs2chars) - { - delete[] m_glyphs2chars; - m_glyphs2chars = NULL; - } - if(m_char_widths) - { - delete[] m_char_widths; - m_char_widths = NULL; - } - if(m_glyph_advances) - { - delete[] m_glyph_advances; - m_glyph_advances = NULL; - } - if(m_glyph_positions) - { - delete[] m_glyph_positions; - m_glyph_positions = NULL; - } - SafeCFRelease(m_typesetter); - SafeCFRelease(m_line); - m_has_bound_rec = false; - SAL_INFO( "vcl.coretext.layout", "<--" ); -} - -void CoreTextLayout::DrawText( SalGraphics& rGraphics ) const -{ - SAL_INFO( "vcl.coretext.layout", "-->" ); - IosSalGraphics& gr = static_cast<IosSalGraphics&>(rGraphics); - if(m_chars_count <= 0 || !gr.CheckContext()) - { - return; - } - CGContextSaveGState( gr.mrContext ); - Point pos = GetDrawPosition(Point(0,0)); -#if 0 - SAL_INFO( "vcl.coretext.layout", "at pos (" << pos.X() << "," << pos.Y() << ")" ); - CGContextSetTextMatrix(gr.mrContext, CGAffineTransformMakeScale(1.0, -1.0)); - CGContextSetShouldAntialias( gr.mrContext, !gr.mbNonAntialiasedText ); - CGContextSetTextPosition(gr.mrContext, pos.X(), pos.Y()); - CTLineDraw(m_line, gr.mrContext); -#else - InitGIA(); - SAL_INFO( "vcl.coretext.layout", "at pos (" << pos.X() << "," << pos.Y() <<") ctfont=" << m_style->GetFont() ); - CGFontRef cg_font = CTFontCopyGraphicsFont(m_style->GetFont(), NULL); - if(!cg_font) - { - SAL_INFO( "vcl.coretext.layout", "Error cg_font is NULL" ); - return; - } - CGContextSetFont(gr.mrContext, cg_font); - CGContextSetFontSize(gr.mrContext, CTFontGetSize(m_style->GetFont())); - CGContextSetTextDrawingMode(gr.mrContext, kCGTextFill); - CGContextSetShouldAntialias( gr.mrContext, true ); - if(m_style->GetColor()) - { - CGContextSetFillColorWithColor(gr.mrContext, m_style->GetColor()); - CGContextSetStrokeColorWithColor(gr.mrContext, m_style->GetColor()); - } - else - { - CGContextSetRGBFillColor(gr.mrContext, 0.0, 0.0, 0.0, 1.0); - } - CFRelease(cg_font); - CGContextSetTextMatrix(gr.mrContext, CGAffineTransformMakeScale(1.0, -1.0)); - CGContextSetShouldAntialias( gr.mrContext, !gr.mbNonAntialiasedText ); - CGContextTranslateCTM(gr.mrContext, pos.X(), pos.Y()); - CGContextShowGlyphs(gr.mrContext, m_glyphs, m_glyphs_count); -#endif - // restore the original graphic context transformations - CGContextRestoreGState( gr.mrContext ); - SAL_INFO( "vcl.coretext.layout", "<--" ); - -} - -// not needed. CoreText manage fallback directly -void CoreTextLayout::DropGlyph( int /*nStart*/ ) {} - -long CoreTextLayout::FillDXArray( long* pDXArray ) const -{ - SAL_INFO( "vcl.coretext.layout", "-->" ); - // short circuit requests which don't need full details - if( !pDXArray ) - { - return GetTextWidth(); - } - - // initialize details about the resulting layout - InitGIA(); - - // distribute the widths among the string elements - long width = 0; - float scale = m_style->GetFontStretchFactor(); - m_cached_width = 0; - - for( int i = 0; i < m_chars_count; ++i ) - { - // convert and adjust for accumulated rounding errors - m_cached_width += m_char_widths[i]; - const long old_width = width; - width = round_to_long(m_cached_width * scale); - pDXArray[i] = width - old_width; - } - SAL_INFO( "vcl.coretext.layout", " width=" << width << " <--" ); - return width; -} - -bool CoreTextLayout::GetBoundRect( SalGraphics &rGraphics, Rectangle& rVCLRect ) const -{ - - SAL_INFO( "vcl.coretext.layout", "-->" ); - if ( !m_has_bound_rec ) - { - IosSalGraphics& gr = static_cast<IosSalGraphics&>(rGraphics); - CGRect bound_rect = CTLineGetImageBounds( m_line, gr.mrContext ); - if ( !CGRectIsNull( bound_rect ) ) - { - m_bound_rect = Rectangle( - Point( round_to_long(bound_rect.origin.x * m_style->GetFontStretchFactor()), - round_to_long(bound_rect.origin.y - bound_rect.size.height )), - Size( round_to_long(bound_rect.size.width * m_style->GetFontStretchFactor()), round_to_long(bound_rect.size.height))); - m_bound_rect.Justify(); - } - m_has_bound_rec = true; - } - rVCLRect = m_bound_rect; - SAL_INFO( "vcl.coretext.layout", "<--" ); - return true; -} - -void CoreTextLayout::GetCaretPositions( int max_index, long* caret_position) const -{ - SAL_INFO( "vcl.coretext.layout", "max_index " << max_index << " -->" ); - int local_max = max_index < m_chars_count * 2 ? max_index : m_chars_count; - for(int i = 0 ; i < max_index - 1; i+=2) - { - CGFloat primary, secondary; - primary = CTLineGetOffsetForStringIndex(m_line, i >> 1, &secondary); - caret_position[i] = round_to_long(m_base_advance + primary); - caret_position[i+1] = round_to_long(m_base_advance + secondary); - i += 2; - } - for(int i = local_max ; i < max_index ; ++i) - { - caret_position[i] = -1; - } - SAL_INFO( "vcl.coretext.layout", "<--" ); -} - -bool CoreTextLayout::GetGlyphOutlines( SalGraphics&, PolyPolyVector& ) const { return false; } - -int CoreTextLayout::GetNextGlyphs( int nLen, sal_GlyphId* pGlyphIDs, Point& rPos, int& nStart, - sal_Int32* pGlyphAdvances, int* pCharIndexes ) const -{ - SAL_INFO( "vcl.coretext.layout", "nLen=" << nLen << " nStart=" << nStart << " -->"); - // get glyph measurements - InitGIA(); - - if( nStart < 0 ) // first glyph requested? - { - nStart = 0; - m_current_run_index = 0; - m_current_glyph_index = 0; - m_current_glyphrun_index = 0; - } - else if(nStart >= m_glyphs_count) - { - m_current_run_index = 0; - m_current_glyph_index = 0; - m_current_glyphrun_index = 0; - return 0; - } - if(!m_runs) - { - m_runs = CTLineGetGlyphRuns(m_line); - } - CFIndex nb_runs = CFArrayGetCount( m_runs ); - CTRunRef run = (CTRunRef)CFArrayGetValueAtIndex( m_runs, m_current_run_index ); - CFIndex nb_glyphs = CTRunGetGlyphCount( run ); - - int i = 0; - bool first = true; - while(i < nLen) - { - if(m_current_glyphrun_index >= nb_glyphs) - { - m_current_run_index += 1; - if(m_current_run_index >= nb_runs) - { - break; - } - run = (CTRunRef)CFArrayGetValueAtIndex( m_runs, m_current_run_index ); - nb_glyphs = CTRunGetGlyphCount( run ); - m_current_glyphrun_index = 0; - } - if(first) - { - CGPoint first_pos; - CTRunGetPositions(run, CFRangeMake(m_current_glyphrun_index,1), &first_pos); - Point pos(first_pos.x, first_pos.y); - rPos = GetDrawPosition(pos); - SAL_INFO( "vcl.coretext.layout", "rPos(" << rPos.X() << "," << rPos.Y() << ")" ); - first = false; - } - pGlyphIDs[i] = m_glyphs[m_current_glyph_index]; - if(pGlyphAdvances) - { - pGlyphAdvances[i] = m_glyph_advances[m_current_glyph_index]; - } - if(pCharIndexes) - { - pCharIndexes[i] = m_glyphs2chars[m_current_glyph_index]; - } - m_current_glyph_index += 1; - m_current_glyphrun_index += 1; - i += 1; - nStart += 1; - } - SAL_INFO( "vcl.coretext.layout", "i=" << i << " <--" ); - return i; -} - -int CoreTextLayout::GetTextBreak( long /*nMaxWidth*/, long /*nCharExtra*/, int /*nFactor*/ ) const -{ - /* TODO */ - return false; -} - -long CoreTextLayout::GetTextWidth() const -{ - SAL_INFO( "vcl.coretext.layout", "-->" ); - - CGRect bound_rect = CTLineGetImageBounds(m_line, m_graphics->GetContext()); - long w = round_to_long(bound_rect.size.width * m_style->GetFontStretchFactor()); - SAL_INFO( "vcl.coretext.layout", "w=" << w << " <--" ); - return w; -} - -// not needed. CoreText manage fallback directly -void CoreTextLayout::InitFont() const -{ - SAL_INFO( "vcl.coretext.layout", "<-->" ); -} - -bool CoreTextLayout::InitGIA() const -{ - SAL_INFO( "vcl.coretext.layout", "count=" << m_chars_count << "-->" ); - - if( m_chars_count <= 0) - { - return false; - } - if(m_glyphs) - { - return true; - } - - m_glyphs = new CGGlyph[m_glyphs_count]; - m_char_widths = new int[ m_chars_count ]; - m_chars2glyphs = new int[ m_chars_count ]; - for( int i = 0; i < m_chars_count; ++i) - { - m_char_widths[i] = 0.0; - m_chars2glyphs[i] = -1; - } - m_glyphs2chars = new int[m_glyphs_count]; - m_glyph_advances = new int[m_glyphs_count]; - m_glyph_positions = new CGPoint[m_glyphs_count]; - - - CFArrayRef runs = CTLineGetGlyphRuns( m_line ); - CFIndex nb_runs = CFArrayGetCount( runs ); - int p = 0; - for( CFIndex i = 0; i < nb_runs; ++i ) - { - CTRunRef run = (CTRunRef)CFArrayGetValueAtIndex( runs, i ); - if( run ) - { - CFIndex nb_glyphs = CTRunGetGlyphCount( run ); - if(nb_glyphs) - { - CFRange text_range = CTRunGetStringRange( run ); - if( text_range.location != kCFNotFound && text_range.length > 0 ) - { - CFIndex indices[ nb_glyphs ]; - CGGlyph glyphs[ nb_glyphs ]; - CTRunGetStringIndices( run, CFRangeMake( 0, 0 ), indices ); - CTRunGetGlyphs( run, CFRangeMake( 0, 0 ), glyphs ); - CTRunGetPositions( run, CFRangeMake( 0, 0 ), &m_glyph_positions[p] ); - bool is_vertical_run = false; - CFDictionaryRef aDict = CTRunGetAttributes( run ); - if ( aDict ) - { - const CFBooleanRef aValue = (const CFBooleanRef)CFDictionaryGetValue( aDict, kCTVerticalFormsAttributeName ); - is_vertical_run = (aValue == kCFBooleanTrue) ? true : false; - } - - for (CFIndex j = 0 ; j < nb_glyphs; ++p, ++j ) - { - m_glyphs[ p ] = glyphs[ j ]; - SAL_INFO( "vcl.coretext.layout", "m_glyphys[" << p << "]=glyphs[" << j << "] run " << i << " : 0x" << std::hex << glyphs[j] << std::dec ); - CFIndex k = indices[ j ]; - m_glyphs2chars[p] = k; - m_chars2glyphs[k] = p; - - if ( j < nb_glyphs - 1 ) - { - m_char_widths[ k ] += m_glyph_positions[ p + 1 ].x - m_glyph_positions[ p ].x; - } - if( p > 0) - { - m_glyph_advances[p - 1] = m_glyph_positions[ p ].x - m_glyph_positions[p - 1].x; - } - } - } - } - } - } - SAL_INFO( "vcl.coretext.layout", "<--" ); - return true; -} - -bool CoreTextLayout::LayoutText(ImplLayoutArgs& args) -{ - SAL_INFO( "vcl.coretext.layout", "m_style=" << m_style << " font=" << m_style->GetFont() << " -->" ); - Clean(); - m_style->SetColor(); - /* retreive MinCharPos EndCharPos Flags and Orientation */ - SalLayout::AdjustLayout(args); - m_chars_count = mnEndCharPos - mnMinCharPos; - - /* don't layout emptty (or worse negative size) strings */ - if(m_chars_count <= 0) - { - return false; - } - - // If the string contains U+FFFD ("REPLACEMENT CHARACTER"), which - // happens at least for the ooo80484-1.slk document in - // sc_filters_test, the CTTypesetterCreateWithAttributedString() - // call below crashes, at least in the iOS simulator. Go figure. - // (In that case the string consists of *only* such characters, - // but play it safe. - for (int i = 0; i < m_chars_count; i++) - { - if (args.mpStr[args.mnMinCharPos+i] == 0xFFFD) - return false; - } - - /* c0 and c1 are construction objects */ - CFStringRef c0 = CFStringCreateWithCharactersNoCopy( NULL, &(args.mpStr[args.mnMinCharPos]), m_chars_count, kCFAllocatorNull ); - if ( !c0 ) - { - Clean(); - return false; - } - - CFStringRef keys[6]; - CFTypeRef values[6]; - int nb_attributes = 0; - - keys[nb_attributes]= kCTFontAttributeName; - values[nb_attributes] = m_style->GetFont(); - nb_attributes += 1; - - CFDictionaryRef attributes = CFDictionaryCreate(kCFAllocatorDefault, - (const void**)&keys, - (const void**)&values, - nb_attributes, - &kCFTypeDictionaryKeyCallBacks, - &kCFTypeDictionaryValueCallBacks); - - - CFAttributedStringRef string = CFAttributedStringCreate( NULL, c0, attributes ); - CFRelease( c0 ); - CFRelease( attributes ); - if ( !string ) - { - Clean(); - return false; - } - m_typesetter = CTTypesetterCreateWithAttributedString(string); - CFRelease(string); - if(!m_typesetter) - { - Clean(); - return false; - } - m_line = CTTypesetterCreateLine(m_typesetter, CFRangeMake(0, 0)); - if(!m_line) - { - Clean(); - return false; - } - m_glyphs_count = CTLineGetGlyphCount(m_line); - - SAL_INFO( "vcl.coretext.layout", "glyph_count=" << m_glyphs_count << " <--" ); - return true; -} - -// not needed. CoreText manage fallback directly -void CoreTextLayout::MoveGlyph( int /*nStart*/, long /*nNewXPos*/ ) {} - -// not needed. CoreText manage fallback directly -void CoreTextLayout::Simplify( bool /*bIsBase*/ ) {} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/ios/source/gdi/salcoretextstyle.cxx b/vcl/ios/source/gdi/salcoretextstyle.cxx deleted file mode 100644 index baa4a7debea0..000000000000 --- a/vcl/ios/source/gdi/salcoretextstyle.cxx +++ /dev/null @@ -1,120 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#include "ios/common.h" -#include "outfont.hxx" -#include "ios/salcoretextfontutils.hxx" -#include "ios/salcoretextstyle.hxx" - -CoreTextStyleInfo::CoreTextStyleInfo() : - m_fake_bold(false), - m_fake_italic(false), - m_matrix(CGAffineTransformIdentity), - m_stretch_factor(1.0), - m_CTParagraphStyle(NULL), - m_CTFont(NULL), - m_color(NULL), - m_font_face(NULL) -{ - SAL_INFO( "vcl.coretext.style", "create <-->" ); -} - -CoreTextStyleInfo::~CoreTextStyleInfo() -{ - SAL_INFO( "vcl.coretext.style", "destroy (font:" << m_CTFont << ") <-->" ); - SafeCFRelease(m_CTFont); - SafeCFRelease(m_CTParagraphStyle); - SafeCFRelease(m_color); -} - -long CoreTextStyleInfo::GetFontStretchedSize() const -{ - CGFloat size = CTFontGetSize(m_CTFont); - return static_cast<long>(size * m_stretch_factor + 0.5); -} - -void CoreTextStyleInfo::SetFont(FontSelectPattern* requested_font) -{ - SAL_INFO( "vcl.coretext.style", "req(" << requested_font << ") release font " << m_CTFont << " -->" ); - - if(!requested_font) - { - SafeCFRelease(m_CTFont); - m_font_face = NULL; - return; - } - m_font_face = (CoreTextPhysicalFontFace*)(requested_font->mpFontData); - - m_matrix = CGAffineTransformIdentity; - CGFloat font_size = (CGFloat)requested_font->mfExactHeight; - - // enable bold-emulation if needed - if( (requested_font->GetWeight() >= WEIGHT_BOLD) && - (m_font_face->GetWeight() < WEIGHT_SEMIBOLD) ) - { - /* FIXME: add support for fake bold */ - m_fake_bold = true; - } - if( ((requested_font->GetSlant() == ITALIC_NORMAL) || (requested_font->GetSlant() == ITALIC_OBLIQUE)) && - !((m_font_face->GetSlant() == ITALIC_NORMAL) || (m_font_face->GetSlant() == ITALIC_OBLIQUE)) ) - { -#define kRotationForItalicText 10 - m_fake_italic = true; - /* about 6 degree of slant */ - m_matrix = CGAffineTransformMake( 1, 0, -tanf( kRotationForItalicText * acosf(0) / 90 ), 1, 0, 0); - } - - // prepare font stretching - if( (requested_font->mnWidth != 0) && (requested_font->mnWidth != requested_font->mnHeight) ) - { - m_stretch_factor = (float)requested_font->mnWidth / requested_font->mnHeight; - m_matrix = CGAffineTransformScale(m_matrix, m_stretch_factor, 1.0F ); - } - - SafeCFRelease(m_CTFont); - - /* FIXME: pass attribute to take into accout 'VerticalStyle' */ - /* FIXME: how to deal with 'rendering options' i.e anti-aliasing, does it even matter in CoreText ? */ - m_CTFont = CTFontCreateCopyWithAttributes(m_font_face->GetCTFont(), font_size, &m_matrix, NULL); - SAL_INFO( "vcl.coretext.style", "font " << m_CTFont << " <--" ); -} - -void CoreTextStyleInfo::SetColor(SalColor color) -{ - SAL_INFO( "vcl.coretext.style", "r:" << SALCOLOR_RED(color) << ",g:" << SALCOLOR_GREEN(color) << ",b:" << SALCOLOR_BLUE(color) ); - SafeCFRelease(m_color); -#ifdef IOS - // No CGColorCreateGenericRGB on iOS - CGColorSpaceRef rgb_space = CGColorSpaceCreateDeviceRGB(); - CGFloat c[] = { SALCOLOR_RED(color) / 255.0f, SALCOLOR_GREEN(color) / 255.0f, SALCOLOR_BLUE(color) / 255.0f, 1.0 }; - m_color = CGColorCreate(rgb_space, c); - CGColorSpaceRelease(rgb_space); -#else - m_color = CGColorCreateGenericRGB(SALCOLOR_RED(color) / 255.0, SALCOLOR_GREEN(color) / 255.0, SALCOLOR_BLUE(color) / 255.0, 1.0); -#endif - SAL_INFO( "vcl.coretext.style", "color=" << m_color << " <--" ); -} - -void CoreTextStyleInfo::SetColor(void) -{ - SAL_INFO( "vcl.coretext.style", "null -->" ); - SafeCFRelease(m_color); - SAL_INFO( "vcl.coretext.style", "color=" << m_color << " <--" ); -} -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/ios/source/gdi/salgdi.cxx b/vcl/ios/source/gdi/salgdi.cxx deleted file mode 100644 index 766412f006bc..000000000000 --- a/vcl/ios/source/gdi/salgdi.cxx +++ /dev/null @@ -1,263 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#include "ios/common.h" - -#include "ios/salframe.h" - -#include "ios/salgdi.h" -#include "ios/salcoretextstyle.hxx" -#include "ios/salcoretextlayout.hxx" - -IosSalGraphics::IosSalGraphics() - : mpFrame( NULL ) - , mxLayer( NULL ) - , mrContext( NULL ) - , mpXorEmulation( NULL ) - , mnXorMode( 0 ) - , mnWidth( 0 ) - , mnHeight( 0 ) - , mnBitmapDepth( 0 ) - , mnRealDPIX( 0 ) - , mnRealDPIY( 0 ) - , mfFakeDPIScale( 1.0 ) - , mxClipPath( NULL ) - , maLineColor( COL_WHITE ) - , maFillColor( COL_BLACK ) - , mbNonAntialiasedText( false ) - , mbPrinter( false ) - , mbVirDev( false ) - , mbWindow( false ) -{ - SAL_INFO( "vcl.coretext.gr", "-->" ); - m_style = new CoreTextStyleInfo(); - SAL_INFO( "vcl.coretext.gr", "m_style=" << m_style << " <--" ); -} - -IosSalGraphics::~IosSalGraphics() -{ - SAL_INFO( "vcl.coretext.gr", "-->" ); - if(m_style) - { - delete m_style; - m_style = NULL; - } - SAL_INFO( "vcl.coretext.gr", "<--" ); -} - -inline bool IosSalGraphics::AddTempDevFont( ImplDevFontList*, - const rtl::OUString& , - const rtl::OUString& ) -{ - OSL_ASSERT( FALSE ); - return false; -} - -void IosSalGraphics::DrawServerFontLayout( const ServerFontLayout& ) -{ -} - -void IosSalGraphics::FreeEmbedFontData( const void* pData, long /*nDataLen*/ ) -{ - // TODO: implementing this only makes sense when the implementation of - // IosSalGraphics::GetEmbedFontData() returns non-NULL - (void)pData; - DBG_ASSERT( (pData!=NULL), "IosSalGraphics::FreeEmbedFontData() is not implemented\n"); -} - -void IosSalGraphics::GetDevFontList( ImplDevFontList* pFontList ) -{ - DBG_ASSERT( pFontList, "IosSalGraphics::GetDevFontList(NULL) !"); - - SalData* pSalData = GetSalData(); - if (pSalData->mpFontList == NULL) - { - pSalData->mpFontList = new SystemFontList(); - } - // Copy all PhysicalFontFace objects contained in the SystemFontList - pSalData->mpFontList->AnnounceFonts( *pFontList ); -} - -void IosSalGraphics::ClearDevFontCache() -{ - SalData* pSalData = GetSalData(); - delete pSalData->mpFontList; - pSalData->mpFontList = NULL; -} - -void IosSalGraphics::GetDevFontSubstList( OutputDevice* ) -{ - // nothing to do since there are no device-specific fonts on Ios -} - -const void* IosSalGraphics::GetEmbedFontData( const PhysicalFontFace*, - const sal_Ucs* /*pUnicodes*/, - sal_Int32* /*pWidths*/, - FontSubsetInfo&, - long* /*pDataLen*/ ) -{ - return NULL; -} - -const Ucs2SIntMap* IosSalGraphics::GetFontEncodingVector(const PhysicalFontFace*, - const Ucs2OStrMap** /*ppNonEncoded*/ ) -{ - return NULL; -} - -void IosSalGraphics::GetFontMetric( ImplFontMetricData* pMetric, int nFallbackLevel ) -{ - (void)nFallbackLevel; // glyph-fallback on CoreText is done differently -> no fallback level - - pMetric->mbScalableFont = true; - pMetric->mbKernableFont = true; - CTFontRef font = m_style->GetFont(); - DBG_ASSERT(font, "GetFontMetric without font set in style"); - - pMetric->mnAscent = static_cast<long>( CTFontGetAscent(font) * mfFakeDPIScale + 0.5); - pMetric->mnDescent = static_cast<long>(CTFontGetDescent(font) * mfFakeDPIScale + 0.5); - const long nExtDescent = static_cast<long>((CTFontGetLeading(font) + CTFontGetDescent(font)) * - mfFakeDPIScale + 0.5); - pMetric->mnExtLeading = nExtDescent + pMetric->mnDescent; - pMetric->mnIntLeading = 0; - pMetric->mnWidth = m_style->GetFontStretchedSize(); - SAL_INFO( "vcl.coretext.gr", "ascent=" << pMetric->mnAscent<< ", descent=" << pMetric->mnDescent << ", extleading=" << pMetric->mnExtLeading << ", intleading=" << pMetric->mnIntLeading << ", w=" << pMetric->mnWidth ); -} - -sal_Bool IosSalGraphics::GetGlyphBoundRect( sal_GlyphId /*nGlyphId*/, Rectangle& /*rRect*/ ) -{ - /* TODO: create a Ghyph iterator to keep track ot 'state' between call */ - return false; -} - -sal_Bool IosSalGraphics::GetGlyphOutline( sal_GlyphId /*nGlyphId*/, basegfx::B2DPolyPolygon& /*rPolyPoly*/ ) -{ - /* TODO */ - return false; -} - -void IosSalGraphics::GetGlyphWidths( const PhysicalFontFace* /*pFontData*/, bool /*bVertical*/, - Int32Vector& /*rGlyphWidths*/, Ucs2UIntMap& /*rUnicodeEnc*/ ) -{ -} - -sal_uLong IosSalGraphics::GetKernPairs( sal_uLong, ImplKernPairData* ) -{ - return 0; -} - -bool IosSalGraphics::GetImplFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const -{ - if( !m_style ) - { - return false; - } - CoreTextPhysicalFontFace* font_face = m_style->GetFontFace(); - if( !font_face) - { - return false; - } - return font_face->GetImplFontCapabilities(rFontCapabilities); -} - -const ImplFontCharMap* IosSalGraphics::GetImplFontCharMap() const -{ - if( !m_style ) - { - return NULL; - } - CoreTextPhysicalFontFace* font_face = m_style->GetFontFace(); - if( !font_face) - { - return ImplFontCharMap::GetDefaultMap(); - } - return font_face->GetImplFontCharMap(); -} - -bool IosSalGraphics::GetRawFontData( const PhysicalFontFace* pFontFace, - std::vector<unsigned char>& rBuffer, bool* pJustCFF ) -{ - const CoreTextPhysicalFontFace* font_face = static_cast<const CoreTextPhysicalFontFace*>(pFontFace); - - return font_face->GetRawFontData(rBuffer, pJustCFF); -} - -SystemFontData IosSalGraphics::GetSysFontData( int /* nFallbacklevel */ ) const -{ - SAL_INFO( "vcl.coretext.gr", "-->" ); - SystemFontData aSysFontData; - aSysFontData.nSize = sizeof( SystemFontData ); - aSysFontData.bAntialias = true; - - CTFontRef font = CTFontCreateUIFontForLanguage(kCTFontSystemFontType, 0.0, NULL); - font = (CTFontRef)CFRetain(font); - aSysFontData.rCTFont = font; - - CTFontRef italic_font = CTFontCreateCopyWithSymbolicTraits( font, - 0.0, - NULL, - kCTFontItalicTrait, - kCTFontItalicTrait + kCTFontBoldTrait); - aSysFontData.bFakeItalic = italic_font ? false : true; - SafeCFRelease(italic_font); - - CTFontRef bold_font = CTFontCreateCopyWithSymbolicTraits( font, - 0.0, - NULL, - kCTFontBoldTrait, - kCTFontItalicTrait + kCTFontBoldTrait); - aSysFontData.bFakeBold = bold_font ? false : true; - SafeCFRelease(bold_font); - - CTFontRef vertical_font = CTFontCreateCopyWithSymbolicTraits( font, - 0.0, - NULL, - kCTFontVerticalTrait, - kCTFontVerticalTrait); - aSysFontData.bVerticalCharacterType = vertical_font ? true : false; - SafeCFRelease(vertical_font); - - SAL_INFO( "vcl.coretext.gr", "<--" ); - return aSysFontData; -} - -SalLayout* IosSalGraphics::GetTextLayout( ImplLayoutArgs&, int /*nFallbackLevel*/ ) -{ - SAL_INFO( "vcl.coretext.gr", "-->" ); - CoreTextLayout* layout = new CoreTextLayout( this, m_style ); - SAL_INFO( "vcl.coretext.gr", "layout:" << layout << " <--" ); - return layout; -} - -sal_uInt16 IosSalGraphics::SetFont( FontSelectPattern* pReqFont, int /*nFallbackLevel*/ ) -{ - SAL_INFO( "vcl.coretext.gr", "m_style=" << m_style << " -->" ); - m_style->SetFont(pReqFont); - SAL_INFO( "vcl.coretext.gr", "<--" ); - return 0; -} - -void IosSalGraphics::SetTextColor( SalColor nSalColor ) -{ - SAL_INFO( "vcl.coretext.gr", "m_style=" << m_style << " -->" ); - m_style->SetColor(nSalColor); - SAL_INFO( "vcl.coretext.gr", "<--" ); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/ios/source/gdi/salgdicommon.cxx b/vcl/ios/source/gdi/salgdicommon.cxx index 615852c812ce..bb6ec7045869 100644 --- a/vcl/ios/source/gdi/salgdicommon.cxx +++ b/vcl/ios/source/gdi/salgdicommon.cxx @@ -23,7 +23,7 @@ #include "basegfx/polygon/b2dpolygon.hxx" #include "ios/salbmp.h" -#include "ios/salgdi.h" +#include "coretext/salgdi.h" #include "fontsubset.hxx" #include "region.h" @@ -134,7 +134,7 @@ static void AddPolyPolygonToPath( CGMutablePathRef xPath, } } -sal_Bool IosSalGraphics::CreateFontSubset( const rtl::OUString& rToFile, +sal_Bool QuartzSalGraphics::CreateFontSubset( const rtl::OUString& rToFile, const PhysicalFontFace* pFontData, long* pGlyphIDs, sal_uInt8* pEncoding, sal_Int32* pGlyphWidths, int nGlyphCount, @@ -275,7 +275,7 @@ static inline void alignLinePoint( const SalPoint* i_pIn, float& o_fX, float& o_ o_fY = static_cast<float>(i_pIn->mnY ) + 0.5; } -void IosSalGraphics::copyBits( const SalTwoRect *pPosAry, SalGraphics *pSrcGraphics ) +void QuartzSalGraphics::copyBits( const SalTwoRect *pPosAry, SalGraphics *pSrcGraphics ) { if( !pSrcGraphics ) { @@ -292,7 +292,7 @@ void IosSalGraphics::copyBits( const SalTwoRect *pPosAry, SalGraphics *pSrcGraph } // accelerate trivial operations - /*const*/ IosSalGraphics* pSrc = static_cast<IosSalGraphics*>(pSrcGraphics); + /*const*/ QuartzSalGraphics* pSrc = static_cast<QuartzSalGraphics*>(pSrcGraphics); const bool bSameGraphics = (this == pSrc) || (mbWindow && mpFrame && pSrc->mbWindow && (mpFrame == pSrc->mpFrame)); if( bSameGraphics && @@ -312,7 +312,7 @@ void IosSalGraphics::copyBits( const SalTwoRect *pPosAry, SalGraphics *pSrcGraph ApplyXorContext(); pSrc->ApplyXorContext(); - DBG_ASSERT( pSrc->mxLayer!=NULL, "IosSalGraphics::copyBits() from non-layered graphics" ); + DBG_ASSERT( pSrc->mxLayer!=NULL, "QuartzSalGraphics::copyBits() from non-layered graphics" ); const CGPoint aDstPoint = { static_cast<CGFloat>(+pPosAry->mnDestX - pPosAry->mnSrcX), static_cast<CGFloat>(pPosAry->mnDestY - pPosAry->mnSrcY) }; if( (pPosAry->mnSrcWidth == pPosAry->mnDestWidth && @@ -414,7 +414,7 @@ static SalColor ImplGetROPSalColor( SalROPColor nROPColor ) } // apply the XOR mask to the target context if active and dirty -void IosSalGraphics::ApplyXorContext() +void QuartzSalGraphics::ApplyXorContext() { if( !mpXorEmulation ) { @@ -426,12 +426,12 @@ void IosSalGraphics::ApplyXorContext() } } -void IosSalGraphics::copyArea( long nDstX, long nDstY,long nSrcX, long nSrcY, +void QuartzSalGraphics::copyArea( long nDstX, long nDstY,long nSrcX, long nSrcY, long nSrcWidth, long nSrcHeight, sal_uInt16 /*nFlags*/ ) { ApplyXorContext(); - DBG_ASSERT( mxLayer!=NULL, "IosSalGraphics::copyArea() for non-layered graphics" ); + DBG_ASSERT( mxLayer!=NULL, "QuartzSalGraphics::copyArea() for non-layered graphics" ); // in XOR mode the drawing context is redirected to the XOR mask // copyArea() always works on the target context though @@ -474,7 +474,7 @@ void IosSalGraphics::copyArea( long nDstX, long nDstY,long nSrcX, long nSrcY, } -void IosSalGraphics::copyResolution( IosSalGraphics& rGraphics ) +void QuartzSalGraphics::copyResolution( QuartzSalGraphics& rGraphics ) { if( !rGraphics.mnRealDPIY && rGraphics.mbWindow && rGraphics.mpFrame ) { @@ -485,7 +485,7 @@ void IosSalGraphics::copyResolution( IosSalGraphics& rGraphics ) mfFakeDPIScale = rGraphics.mfFakeDPIScale; } -bool IosSalGraphics::drawAlphaBitmap( const SalTwoRect& rTR, +bool QuartzSalGraphics::drawAlphaBitmap( const SalTwoRect& rTR, const SalBitmap& rSrcBitmap, const SalBitmap& rAlphaBmp ) { @@ -521,7 +521,7 @@ bool IosSalGraphics::drawAlphaBitmap( const SalTwoRect& rTR, return true; } -bool IosSalGraphics::drawAlphaRect( long nX, long nY, long nWidth, +bool QuartzSalGraphics::drawAlphaRect( long nX, long nY, long nWidth, long nHeight, sal_uInt8 nTransparency ) { if( !CheckContext() ) @@ -549,7 +549,7 @@ bool IosSalGraphics::drawAlphaRect( long nX, long nY, long nWidth, return true; } -void IosSalGraphics::drawBitmap( const SalTwoRect* pPosAry, const SalBitmap& rSalBitmap ) +void QuartzSalGraphics::drawBitmap( const SalTwoRect* pPosAry, const SalBitmap& rSalBitmap ) { if( !CheckContext() ) { @@ -569,13 +569,13 @@ void IosSalGraphics::drawBitmap( const SalTwoRect* pPosAry, const SalBitmap& rSa RefreshRect( aDstRect ); } -void IosSalGraphics::drawBitmap( const SalTwoRect* pPosAry, const SalBitmap& rSalBitmap,SalColor ) +void QuartzSalGraphics::drawBitmap( const SalTwoRect* pPosAry, const SalBitmap& rSalBitmap,SalColor ) { OSL_FAIL("not implemented for color masking!"); drawBitmap( pPosAry, rSalBitmap ); } -void IosSalGraphics::drawBitmap( const SalTwoRect* pPosAry, const SalBitmap& rSalBitmap, +void QuartzSalGraphics::drawBitmap( const SalTwoRect* pPosAry, const SalBitmap& rSalBitmap, const SalBitmap& rTransparentBitmap ) { if( !CheckContext() ) @@ -597,13 +597,13 @@ void IosSalGraphics::drawBitmap( const SalTwoRect* pPosAry, const SalBitmap& rSa RefreshRect( aDstRect ); } -sal_Bool IosSalGraphics::drawEPS( long /*nX*/, long /*nY*/, long /*nWidth*/, long /*nHeight*/, +sal_Bool QuartzSalGraphics::drawEPS( long /*nX*/, long /*nY*/, long /*nWidth*/, long /*nHeight*/, void* /*pEpsData*/, sal_uLong /*nByteCount*/ ) { return sal_False; } -void IosSalGraphics::drawLine( long nX1, long nY1, long nX2, long nY2 ) +void QuartzSalGraphics::drawLine( long nX1, long nY1, long nX2, long nY2 ) { if( nX1 == nX2 && nY1 == nY2 ) { @@ -624,7 +624,7 @@ void IosSalGraphics::drawLine( long nX1, long nY1, long nX2, long nY2 ) Rectangle aRefreshRect( nX1, nY1, nX2, nY2 ); } -void IosSalGraphics::drawMask( const SalTwoRect* pPosAry, +void QuartzSalGraphics::drawMask( const SalTwoRect* pPosAry, const SalBitmap& rSalBitmap, SalColor nMaskColor ) { @@ -647,19 +647,19 @@ void IosSalGraphics::drawMask( const SalTwoRect* pPosAry, RefreshRect( aDstRect ); } -void IosSalGraphics::drawPixel( long nX, long nY ) +void QuartzSalGraphics::drawPixel( long nX, long nY ) { // draw pixel with current line color ImplDrawPixel( nX, nY, maLineColor ); } -void IosSalGraphics::drawPixel( long nX, long nY, SalColor nSalColor ) +void QuartzSalGraphics::drawPixel( long nX, long nY, SalColor nSalColor ) { const RGBAColor aPixelColor( nSalColor ); ImplDrawPixel( nX, nY, aPixelColor ); } -bool IosSalGraphics::drawPolyLine( +bool QuartzSalGraphics::drawPolyLine( const ::basegfx::B2DPolygon& rPolyLine, double fTransparency, const ::basegfx::B2DVector& rLineWidths, @@ -750,12 +750,12 @@ bool IosSalGraphics::drawPolyLine( return true; } -sal_Bool IosSalGraphics::drawPolyLineBezier( sal_uLong, const SalPoint*, const sal_uInt8* ) +sal_Bool QuartzSalGraphics::drawPolyLineBezier( sal_uLong, const SalPoint*, const sal_uInt8* ) { return sal_False; } -bool IosSalGraphics::drawPolyPolygon( const ::basegfx::B2DPolyPolygon& rPolyPoly, +bool QuartzSalGraphics::drawPolyPolygon( const ::basegfx::B2DPolyPolygon& rPolyPoly, double fTransparency ) { // short circuit if there is nothing to do @@ -803,7 +803,7 @@ bool IosSalGraphics::drawPolyPolygon( const ::basegfx::B2DPolyPolygon& rPolyPoly return true; } -void IosSalGraphics::drawPolyPolygon( sal_uLong nPolyCount, const sal_uLong *pPoints, PCONSTSALPOINT *ppPtAry ) +void QuartzSalGraphics::drawPolyPolygon( sal_uLong nPolyCount, const sal_uLong *pPoints, PCONSTSALPOINT *ppPtAry ) { if( nPolyCount <= 0 ) return; @@ -902,7 +902,7 @@ void IosSalGraphics::drawPolyPolygon( sal_uLong nPolyCount, const sal_uLong *pPo RefreshRect( leftX, topY, maxWidth, maxHeight ); } -void IosSalGraphics::drawPolygon( sal_uLong nPoints, const SalPoint *pPtAry ) +void QuartzSalGraphics::drawPolygon( sal_uLong nPoints, const SalPoint *pPtAry ) { if( nPoints <= 1 ) return; @@ -957,18 +957,18 @@ void IosSalGraphics::drawPolygon( sal_uLong nPoints, const SalPoint *pPtAry ) RefreshRect( nX, nY, nWidth, nHeight ); } -sal_Bool IosSalGraphics::drawPolygonBezier( sal_uLong, const SalPoint*, const sal_uInt8* ) +sal_Bool QuartzSalGraphics::drawPolygonBezier( sal_uLong, const SalPoint*, const sal_uInt8* ) { return sal_False; } -sal_Bool IosSalGraphics::drawPolyPolygonBezier( sal_uLong, const sal_uLong*, +sal_Bool QuartzSalGraphics::drawPolyPolygonBezier( sal_uLong, const sal_uLong*, const SalPoint* const*, const sal_uInt8* const* ) { return sal_False; } -void IosSalGraphics::drawRect( long nX, long nY, long nWidth, long nHeight ) +void QuartzSalGraphics::drawRect( long nX, long nY, long nWidth, long nHeight ) { if( !CheckContext() ) { @@ -995,7 +995,7 @@ void IosSalGraphics::drawRect( long nX, long nY, long nWidth, long nHeight ) } -void IosSalGraphics::drawPolyLine( sal_uLong nPoints, const SalPoint *pPtAry ) +void QuartzSalGraphics::drawPolyLine( sal_uLong nPoints, const SalPoint *pPtAry ) { if( nPoints < 1 ) { @@ -1024,15 +1024,15 @@ void IosSalGraphics::drawPolyLine( sal_uLong nPoints, const SalPoint *pPtAry ) RefreshRect( nX, nY, nWidth, nHeight ); } -sal_uInt16 IosSalGraphics::GetBitCount() const +sal_uInt16 QuartzSalGraphics::GetBitCount() const { sal_uInt16 nBits = mnBitmapDepth ? mnBitmapDepth : 32;//24; return nBits; } -SalBitmap* IosSalGraphics::getBitmap( long nX, long nY, long nDX, long nDY ) +SalBitmap* QuartzSalGraphics::getBitmap( long nX, long nY, long nDX, long nDY ) { - DBG_ASSERT( mxLayer, "IosSalGraphics::getBitmap() with no layer" ); + DBG_ASSERT( mxLayer, "QuartzSalGraphics::getBitmap() with no layer" ); ApplyXorContext(); @@ -1046,7 +1046,7 @@ SalBitmap* IosSalGraphics::getBitmap( long nX, long nY, long nDX, long nDY ) return pBitmap; } -SystemGraphicsData IosSalGraphics::GetGraphicsData() const +SystemGraphicsData QuartzSalGraphics::GetGraphicsData() const { SystemGraphicsData aRes; aRes.nSize = sizeof(aRes); @@ -1054,7 +1054,7 @@ SystemGraphicsData IosSalGraphics::GetGraphicsData() const return aRes; } -long IosSalGraphics::GetGraphicsWidth() const +long QuartzSalGraphics::GetGraphicsWidth() const { long w = 0; if( mrContext && (mbWindow || mbVirDev) ) @@ -1072,7 +1072,7 @@ long IosSalGraphics::GetGraphicsWidth() const return w; } -SalColor IosSalGraphics::getPixel( long nX, long nY ) +SalColor QuartzSalGraphics::getPixel( long nX, long nY ) { // return default value on printers or when out of bounds if( !mxLayer || (nX < 0) || (nX >= mnWidth) || @@ -1111,7 +1111,7 @@ SalColor IosSalGraphics::getPixel( long nX, long nY ) return nSalColor; } -void IosSalGraphics::GetResolution( long& rDPIX, long& rDPIY ) +void QuartzSalGraphics::GetResolution( long& rDPIX, long& rDPIY ) { if( !mnRealDPIY ) { @@ -1122,7 +1122,7 @@ void IosSalGraphics::GetResolution( long& rDPIX, long& rDPIY ) rDPIY = static_cast<long>(mfFakeDPIScale * mnRealDPIY); } -void IosSalGraphics::ImplDrawPixel( long nX, long nY, const RGBAColor& rColor ) +void QuartzSalGraphics::ImplDrawPixel( long nX, long nY, const RGBAColor& rColor ) { if( !CheckContext() ) { @@ -1138,7 +1138,7 @@ void IosSalGraphics::ImplDrawPixel( long nX, long nY, const RGBAColor& rColor ) CGContextSetFillColor( mrContext, maFillColor.AsArray() ); } -void IosSalGraphics::initResolution( UIWindow* ) +void QuartzSalGraphics::initResolution( UIWindow* ) { // #i100617# read DPI only once; there is some kind of weird caching going on // if the main screen changes @@ -1172,7 +1172,7 @@ void IosSalGraphics::initResolution( UIWindow* ) mfFakeDPIScale = 1.0; } -void IosSalGraphics::invert( long nX, long nY, long nWidth, long nHeight, SalInvert nFlags ) +void QuartzSalGraphics::invert( long nX, long nY, long nWidth, long nHeight, SalInvert nFlags ) { if ( CheckContext() ) { @@ -1206,7 +1206,7 @@ void IosSalGraphics::invert( long nX, long nY, long nWidth, long nHeight, SalInv } } -void IosSalGraphics::invert( sal_uLong nPoints, const SalPoint* pPtAry, SalInvert nSalFlags ) +void QuartzSalGraphics::invert( sal_uLong nPoints, const SalPoint* pPtAry, SalInvert nSalFlags ) { CGPoint* CGpoints ; if ( CheckContext() ) @@ -1241,7 +1241,7 @@ void IosSalGraphics::invert( sal_uLong nPoints, const SalPoint* pPtAry, SalInve } } -void IosSalGraphics::Pattern50Fill() +void QuartzSalGraphics::Pattern50Fill() { static const float aFillCol[4] = { 1,1,1,1 }; static const CGPatternCallbacks aCallback = { 0, &DrawPattern50, NULL }; @@ -1262,7 +1262,7 @@ void IosSalGraphics::Pattern50Fill() } -void IosSalGraphics::ResetClipRegion() +void QuartzSalGraphics::ResetClipRegion() { // release old path and indicate no clipping if( mxClipPath ) @@ -1276,7 +1276,7 @@ void IosSalGraphics::ResetClipRegion() } } -void IosSalGraphics::SetLineColor() +void QuartzSalGraphics::SetLineColor() { maLineColor.SetAlpha( 0.0 ); // transparent if( CheckContext() ) @@ -1285,7 +1285,7 @@ void IosSalGraphics::SetLineColor() } } -void IosSalGraphics::SetLineColor( SalColor nSalColor ) +void QuartzSalGraphics::SetLineColor( SalColor nSalColor ) { maLineColor = RGBAColor( nSalColor ); if( CheckContext() ) @@ -1294,7 +1294,7 @@ void IosSalGraphics::SetLineColor( SalColor nSalColor ) } } -void IosSalGraphics::SetFillColor() +void QuartzSalGraphics::SetFillColor() { maFillColor.SetAlpha( 0.0 ); // transparent if( CheckContext() ) @@ -1303,7 +1303,7 @@ void IosSalGraphics::SetFillColor() } } -void IosSalGraphics::SetFillColor( SalColor nSalColor ) +void QuartzSalGraphics::SetFillColor( SalColor nSalColor ) { maFillColor = RGBAColor( nSalColor ); if( CheckContext() ) @@ -1312,7 +1312,7 @@ void IosSalGraphics::SetFillColor( SalColor nSalColor ) } } -bool IosSalGraphics::supportsOperation( OutDevSupportType eType ) const +bool QuartzSalGraphics::supportsOperation( OutDevSupportType eType ) const { bool bRet = false; switch( eType ) @@ -1327,7 +1327,7 @@ bool IosSalGraphics::supportsOperation( OutDevSupportType eType ) const return bRet; } -bool IosSalGraphics::setClipRegion( const Region& i_rClip ) +bool QuartzSalGraphics::setClipRegion( const Region& i_rClip ) { // release old clip path if( mxClipPath ) @@ -1366,19 +1366,19 @@ bool IosSalGraphics::setClipRegion( const Region& i_rClip ) return true; } -void IosSalGraphics::SetROPFillColor( SalROPColor nROPColor ) +void QuartzSalGraphics::SetROPFillColor( SalROPColor nROPColor ) { if( ! mbPrinter ) SetFillColor( ImplGetROPSalColor( nROPColor ) ); } -void IosSalGraphics::SetROPLineColor( SalROPColor nROPColor ) +void QuartzSalGraphics::SetROPLineColor( SalROPColor nROPColor ) { if( ! mbPrinter ) SetLineColor( ImplGetROPSalColor( nROPColor ) ); } -void IosSalGraphics::SetXORMode( bool bSet, bool bInvertOnly ) +void QuartzSalGraphics::SetXORMode( bool bSet, bool bInvertOnly ) { // return early if XOR mode remains unchanged if( mbPrinter ) @@ -1433,7 +1433,7 @@ void IosSalGraphics::SetXORMode( bool bSet, bool bInvertOnly ) } } -void IosSalGraphics::updateResolution() +void QuartzSalGraphics::updateResolution() { DBG_ASSERT( mbWindow, "updateResolution on inappropriate graphics" ); diff --git a/vcl/ios/source/gdi/salgdiutils.cxx b/vcl/ios/source/gdi/salgdiutils.cxx index f433bbe798a4..fc499e450743 100644 --- a/vcl/ios/source/gdi/salgdiutils.cxx +++ b/vcl/ios/source/gdi/salgdiutils.cxx @@ -29,13 +29,13 @@ #include "vcl/svapp.hxx" -#include "ios/salgdi.h" +#include "coretext/salgdi.h" #include "ios/salframe.h" #include "ios/saldata.hxx" // ---------------------------------------------------------------------- -void IosSalGraphics::SetWindowGraphics( IosSalFrame* pFrame ) +void QuartzSalGraphics::SetWindowGraphics( IosSalFrame* pFrame ) { mpFrame = pFrame; @@ -44,7 +44,7 @@ void IosSalGraphics::SetWindowGraphics( IosSalFrame* pFrame ) mbVirDev = false; } -void IosSalGraphics::SetPrinterGraphics( CGContextRef xContext, long nDPIX, long nDPIY, double fScale ) +void QuartzSalGraphics::SetPrinterGraphics( CGContextRef xContext, long nDPIX, long nDPIY, double fScale ) { mbWindow = false; mbPrinter = true; @@ -71,7 +71,7 @@ void IosSalGraphics::SetPrinterGraphics( CGContextRef xContext, long nDPIX, long } } -void IosSalGraphics::SetVirDevGraphics( CGLayerRef xLayer, CGContextRef xContext, +void QuartzSalGraphics::SetVirDevGraphics( CGLayerRef xLayer, CGContextRef xContext, int nBitmapDepth ) { mbWindow = false; @@ -120,7 +120,7 @@ void IosSalGraphics::SetVirDevGraphics( CGLayerRef xLayer, CGContextRef xContext // ---------------------------------------------------------------------- -void IosSalGraphics::InvalidateContext() +void QuartzSalGraphics::InvalidateContext() { UnsetState(); mrContext = 0; @@ -128,7 +128,7 @@ void IosSalGraphics::InvalidateContext() // ---------------------------------------------------------------------- -void IosSalGraphics::UnsetState() +void QuartzSalGraphics::UnsetState() { if( mrContext ) { @@ -142,7 +142,7 @@ void IosSalGraphics::UnsetState() } } -void IosSalGraphics::SetState() +void QuartzSalGraphics::SetState() { CGContextRestoreGState( mrContext ); CGContextSaveGState( mrContext ); @@ -165,7 +165,7 @@ void IosSalGraphics::SetState() // ---------------------------------------------------------------------- -bool IosSalGraphics::CheckContext() +bool QuartzSalGraphics::CheckContext() { if( mbWindow && mpFrame != NULL ) { @@ -222,11 +222,11 @@ bool IosSalGraphics::CheckContext() CGContextRelease( rReleaseContext ); } - DBG_ASSERT( mrContext || mbPrinter, "<<<WARNING>>> IosSalGraphics::CheckContext() FAILED!!!!\n" ); + DBG_ASSERT( mrContext || mbPrinter, "<<<WARNING>>> QuartzSalGraphics::CheckContext() FAILED!!!!\n" ); return (mrContext != NULL); } -CGContextRef IosSalGraphics::GetContext() +CGContextRef QuartzSalGraphics::GetContext() { if(!mrContext) { @@ -235,7 +235,7 @@ CGContextRef IosSalGraphics::GetContext() return mrContext; } -void IosSalGraphics::RefreshRect(float lX, float lY, float lWidth, float lHeight) +void QuartzSalGraphics::RefreshRect(float lX, float lY, float lWidth, float lHeight) { if( ! mbWindow ) // view only on Window graphics return; @@ -252,7 +252,7 @@ void IosSalGraphics::RefreshRect(float lX, float lY, float lWidth, float lHeight } } -CGPoint* IosSalGraphics::makeCGptArray(sal_uLong nPoints, const SalPoint* pPtAry) +CGPoint* QuartzSalGraphics::makeCGptArray(sal_uLong nPoints, const SalPoint* pPtAry) { CGPoint *CGpoints = new CGPoint[nPoints]; if ( CGpoints ) @@ -268,7 +268,7 @@ CGPoint* IosSalGraphics::makeCGptArray(sal_uLong nPoints, const SalPoint* pPtAr // ----------------------------------------------------------------------- -void IosSalGraphics::UpdateWindow( CGRect& ) +void QuartzSalGraphics::UpdateWindow( CGRect& ) { #if 0 // Sigh, this is just basically a copy of the "aqua" code and not // applicable to iOS. diff --git a/vcl/ios/source/gdi/salnativewidgets.cxx b/vcl/ios/source/gdi/salnativewidgets.cxx index 0bdf0be0c638..7b4beb5000c9 100644 --- a/vcl/ios/source/gdi/salnativewidgets.cxx +++ b/vcl/ios/source/gdi/salnativewidgets.cxx @@ -23,7 +23,7 @@ #include "vcl/timer.hxx" #include "ios/salconst.h" -#include "ios/salgdi.h" +#include "coretext/salgdi.h" #include "ios/saldata.hxx" #include "ios/salframe.h" @@ -39,7 +39,7 @@ * drawing of the control defined by nPart. * */ -sal_Bool IosSalGraphics::IsNativeControlSupported( ControlType nType, ControlPart nPart ) +sal_Bool QuartzSalGraphics::IsNativeControlSupported( ControlType nType, ControlPart nPart ) { bool bOk = sal_False; @@ -173,7 +173,7 @@ sal_Bool IosSalGraphics::IsNativeControlSupported( ControlType nType, ControlPar * aPos was or was not inside the native widget specified by the * nType/nPart combination. */ -sal_Bool IosSalGraphics::hitTestNativeControl( ControlType nType, ControlPart nPart, const Rectangle& rControlRegion, +sal_Bool QuartzSalGraphics::hitTestNativeControl( ControlType nType, ControlPart nPart, const Rectangle& rControlRegion, const Point& rPos, sal_Bool& rIsInside ) { (void) nType; @@ -184,13 +184,13 @@ sal_Bool IosSalGraphics::hitTestNativeControl( ControlType nType, ControlPart nP return sal_False; } -UInt32 IosSalGraphics::getState( ControlState nState ) +UInt32 QuartzSalGraphics::getState( ControlState nState ) { (void) nState; return 0; } -UInt32 IosSalGraphics::getTrackState( ControlState nState ) +UInt32 QuartzSalGraphics::getTrackState( ControlState nState ) { (void) nState; return 0; @@ -205,7 +205,7 @@ UInt32 IosSalGraphics::getTrackState( ControlState nState ) * aValue: An optional value (tristate/numerical/string) * aCaption: A caption or title string (like button text etc) */ -sal_Bool IosSalGraphics::drawNativeControl(ControlType nType, +sal_Bool QuartzSalGraphics::drawNativeControl(ControlType nType, ControlPart nPart, const Rectangle& rControlRegion, ControlState nState, @@ -233,9 +233,9 @@ sal_Bool IosSalGraphics::drawNativeControl(ControlType nType, * aValue: An optional value (tristate/numerical/string) * aCaption: A caption or title string (like button text etc) */ -sal_Bool IosSalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPart, const Rectangle& rControlRegion, ControlState /*nState*/, - const ImplControlValue& aValue, const rtl::OUString&, - Rectangle &rNativeBoundingRegion, Rectangle &rNativeContentRegion ) +sal_Bool QuartzSalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPart, const Rectangle& rControlRegion, ControlState /*nState*/, + const ImplControlValue& aValue, const rtl::OUString&, + Rectangle &rNativeBoundingRegion, Rectangle &rNativeContentRegion ) { (void) nType; diff --git a/vcl/ios/source/gdi/salvd.cxx b/vcl/ios/source/gdi/salvd.cxx index bf345415f333..6e32a22126e3 100644 --- a/vcl/ios/source/gdi/salvd.cxx +++ b/vcl/ios/source/gdi/salvd.cxx @@ -23,7 +23,7 @@ #include "ios/salvd.h" #include "ios/salinst.h" -#include "ios/salgdi.h" +#include "coretext/salgdi.h" #include "ios/saldata.hxx" #include "ios/salframe.h" @@ -35,7 +35,7 @@ SalVirtualDevice* IosSalInstance::CreateVirtualDevice( SalGraphics* pGraphics, // #i92075# can be called first in a thread SalData::ensureThreadAutoreleasePool(); - return new IosSalVirtualDevice( static_cast< IosSalGraphics* >( pGraphics ), nDX, nDY, nBitCount, pData ); + return new IosSalVirtualDevice( static_cast< QuartzSalGraphics* >( pGraphics ), nDX, nDY, nBitCount, pData ); } // ----------------------------------------------------------------------- @@ -47,7 +47,7 @@ void IosSalInstance::DestroyVirtualDevice( SalVirtualDevice* pDevice ) // ======================================================================= -IosSalVirtualDevice::IosSalVirtualDevice( IosSalGraphics* pGraphic, long nDX, long nDY, sal_uInt16 nBitCount, const SystemGraphicsData *pData ) +IosSalVirtualDevice::IosSalVirtualDevice( QuartzSalGraphics* pGraphic, long nDX, long nDY, sal_uInt16 nBitCount, const SystemGraphicsData *pData ) : mbGraphicsUsed( false ) , mxBitmapContext( NULL ) , mnBitmapDepth( 0 ) @@ -58,14 +58,14 @@ IosSalVirtualDevice::IosSalVirtualDevice( IosSalGraphics* pGraphic, long nDX, lo // Create virtual device based on existing SystemGraphicsData // We ignore nDx and nDY, as the desired size comes from the SystemGraphicsData mbForeignContext = true; // the mxContext is from pData - mpGraphics = new IosSalGraphics( /*pGraphic*/ ); + mpGraphics = new QuartzSalGraphics( /*pGraphic*/ ); mpGraphics->SetVirDevGraphics( mxLayer, pData->rCGContext ); } else { // create empty new virtual device mbForeignContext = false; // the mxContext is created within VCL - mpGraphics = new IosSalGraphics(); // never fails + mpGraphics = new QuartzSalGraphics(); // never fails mnBitmapDepth = nBitCount; // inherit resolution from reference device diff --git a/vcl/ios/source/window/salframe.cxx b/vcl/ios/source/window/salframe.cxx index 241d58e86cac..e619111ac768 100644 --- a/vcl/ios/source/window/salframe.cxx +++ b/vcl/ios/source/window/salframe.cxx @@ -29,7 +29,7 @@ #include "vcl/timer.hxx" #include "ios/saldata.hxx" -#include "ios/salgdi.h" +#include "coretext/salgdi.h" #include "ios/salframe.h" #include "ios/salmenu.h" #include "ios/saltimer.h" @@ -205,7 +205,7 @@ SalGraphics* IosSalFrame::GetGraphics() if ( !mpGraphics ) { - mpGraphics = new IosSalGraphics; + mpGraphics = new QuartzSalGraphics; mpGraphics->SetWindowGraphics( this ); } diff --git a/vcl/ios/source/window/salframeview.mm b/vcl/ios/source/window/salframeview.mm index ea108934ecfa..0ca3441fe814 100644 --- a/vcl/ios/source/window/salframeview.mm +++ b/vcl/ios/source/window/salframeview.mm @@ -25,7 +25,7 @@ #include "vcl/svapp.hxx" #include "ios/salinst.h" -#include "ios/salgdi.h" +#include "coretext/salgdi.h" #include "ios/salframe.h" #include "ios/salframeview.h" @@ -238,7 +238,7 @@ private: { // NOTE: the mpFrame access below is not guarded yet! // TODO: mpFrame et al need to be guarded by an independent mutex - IosSalGraphics* pGraphics = (mpFrame && IosSalFrame::isAlive(mpFrame)) ? mpFrame->mpGraphics : NULL; + QuartzSalGraphics* pGraphics = (mpFrame && IosSalFrame::isAlive(mpFrame)) ? mpFrame->mpGraphics : NULL; if( pGraphics ) { pGraphics->RefreshRect( aRect ); |