summaryrefslogtreecommitdiff
path: root/vcl/ios
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/ios')
-rw-r--r--vcl/ios/source/gdi/salcoretextfontutils.cxx613
-rw-r--r--vcl/ios/source/gdi/salcoretextlayout.cxx481
-rw-r--r--vcl/ios/source/gdi/salcoretextstyle.cxx120
-rw-r--r--vcl/ios/source/gdi/salgdi.cxx263
-rw-r--r--vcl/ios/source/gdi/salgdicommon.cxx102
-rw-r--r--vcl/ios/source/gdi/salgdiutils.cxx26
-rw-r--r--vcl/ios/source/gdi/salnativewidgets.cxx18
-rw-r--r--vcl/ios/source/gdi/salvd.cxx10
-rw-r--r--vcl/ios/source/window/salframe.cxx4
-rw-r--r--vcl/ios/source/window/salframeview.mm4
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 );