Lines 85-90
Link Here
|
85 |
if (line.aBreakIterator) delete line.aBreakIterator; |
85 |
if (line.aBreakIterator) delete line.aBreakIterator; |
86 |
} |
86 |
} |
87 |
|
87 |
|
|
|
88 |
/* |
89 |
Wrapper class to provide public access to the RuleBasedBreakIterator's |
90 |
setbreakType method. |
91 |
*/ |
92 |
class OOoRuleBasedBreakIterator : public RuleBasedBreakIterator { |
93 |
public: |
94 |
inline void publicSetBreakType(int32_t type) { |
95 |
setBreakType(type); |
96 |
}; |
97 |
OOoRuleBasedBreakIterator(UDataMemory* image, |
98 |
UErrorCode &status) : |
99 |
RuleBasedBreakIterator(image, status) { }; |
100 |
|
101 |
}; |
102 |
|
88 |
// loading ICU breakiterator on demand. |
103 |
// loading ICU breakiterator on demand. |
89 |
void SAL_CALL BreakIterator_Unicode::loadICUBreakIterator(const com::sun::star::lang::Locale& rLocale, |
104 |
void SAL_CALL BreakIterator_Unicode::loadICUBreakIterator(const com::sun::star::lang::Locale& rLocale, |
90 |
sal_Int16 rBreakType, sal_Int16 rWordType, const sal_Char *rule, const OUString& rText) throw(uno::RuntimeException) |
105 |
sal_Int16 rBreakType, sal_Int16 rWordType, const sal_Char *rule, const OUString& rText) throw(uno::RuntimeException) |
Lines 118-127
Link Here
|
118 |
udata_setAppData("OpenOffice", OpenOffice_dat, &status); |
133 |
udata_setAppData("OpenOffice", OpenOffice_dat, &status); |
119 |
if ( !U_SUCCESS(status) ) throw ERROR; |
134 |
if ( !U_SUCCESS(status) ) throw ERROR; |
120 |
|
135 |
|
121 |
RuleBasedBreakIterator *rbi = NULL; |
136 |
OOoRuleBasedBreakIterator *rbi = NULL; |
122 |
|
137 |
|
123 |
if (breakRules.getLength() > 0 && breakRules[breakType].getLength() > 0) { |
138 |
if (breakRules.getLength() > 0 && breakRules[breakType].getLength() > 0) { |
124 |
rbi = new RuleBasedBreakIterator(udata_open("OpenOffice", "brk", |
139 |
rbi = new OOoRuleBasedBreakIterator(udata_open("OpenOffice", "brk", |
125 |
OUStringToOString(breakRules[breakType], RTL_TEXTENCODING_ASCII_US).getStr(), &status), status); |
140 |
OUStringToOString(breakRules[breakType], RTL_TEXTENCODING_ASCII_US).getStr(), &status), status); |
126 |
} else { |
141 |
} else { |
127 |
status = U_ZERO_ERROR; |
142 |
status = U_ZERO_ERROR; |
Lines 131-151
Link Here
|
131 |
aUDName.append( OUStringToOString(rLocale.Language, RTL_TEXTENCODING_ASCII_US)); |
146 |
aUDName.append( OUStringToOString(rLocale.Language, RTL_TEXTENCODING_ASCII_US)); |
132 |
UDataMemory* pUData = udata_open("OpenOffice", "brk", aUDName.getStr(), &status); |
147 |
UDataMemory* pUData = udata_open("OpenOffice", "brk", aUDName.getStr(), &status); |
133 |
if( U_SUCCESS(status) ) |
148 |
if( U_SUCCESS(status) ) |
134 |
rbi = new RuleBasedBreakIterator( pUData, status); |
149 |
rbi = new OOoRuleBasedBreakIterator( pUData, status); |
135 |
if (!U_SUCCESS(status) ) { |
150 |
if (!U_SUCCESS(status) ) { |
136 |
status = U_ZERO_ERROR; |
151 |
status = U_ZERO_ERROR; |
137 |
pUData = udata_open("OpenOffice", "brk", rule, &status); |
152 |
pUData = udata_open("OpenOffice", "brk", rule, &status); |
138 |
if( U_SUCCESS(status) ) |
153 |
if( U_SUCCESS(status) ) |
139 |
rbi = new RuleBasedBreakIterator( pUData, status); |
154 |
rbi = new OOoRuleBasedBreakIterator( pUData, status); |
140 |
if (!U_SUCCESS(status) ) icuBI->aBreakIterator=NULL; |
155 |
if (!U_SUCCESS(status) ) icuBI->aBreakIterator=NULL; |
141 |
} |
156 |
} |
142 |
} |
157 |
} |
143 |
if (rbi) { |
158 |
if (rbi) { |
144 |
switch (rBreakType) { |
159 |
switch (rBreakType) { |
145 |
case LOAD_CHARACTER_BREAKITERATOR: rbi->setBreakType(UBRK_CHARACTER); break; |
160 |
case LOAD_CHARACTER_BREAKITERATOR: rbi->publicSetBreakType(UBRK_CHARACTER); break; |
146 |
case LOAD_WORD_BREAKITERATOR: rbi->setBreakType(UBRK_WORD); break; |
161 |
case LOAD_WORD_BREAKITERATOR: rbi->publicSetBreakType(UBRK_WORD); break; |
147 |
case LOAD_SENTENCE_BREAKITERATOR: rbi->setBreakType(UBRK_SENTENCE); break; |
162 |
case LOAD_SENTENCE_BREAKITERATOR: rbi->publicSetBreakType(UBRK_SENTENCE); break; |
148 |
case LOAD_LINE_BREAKITERATOR: rbi->setBreakType(UBRK_LINE); break; |
163 |
case LOAD_LINE_BREAKITERATOR: rbi->publicSetBreakType(UBRK_LINE); break; |
149 |
} |
164 |
} |
150 |
icuBI->aBreakIterator = rbi; |
165 |
icuBI->aBreakIterator = rbi; |
151 |
} |
166 |
} |