| paper.cxx (449ab281) | paper.cxx (635e0213) |
|---|---|
| 1/************************************************************** | 1/************************************************************** |
| 2 * | 2 * |
| 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at | 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at |
| 10 * | 10 * |
| 11 * http://www.apache.org/licenses/LICENSE-2.0 | 11 * http://www.apache.org/licenses/LICENSE-2.0 |
| 12 * | 12 * |
| 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. | 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. |
| 19 * | 19 * |
| 20 *************************************************************/ 21 22 23 24// MARKER(update_precomp.py): autogen include statement, do not remove 25#include "precompiled_i18npool.hxx" 26 27#include <osl/diagnose.h> --- 47 unchanged lines hidden (view full) --- 75 { MM2MM100( 297 ), MM2MM100( 420 ), "A3", NULL }, 76 { MM2MM100( 210 ), MM2MM100( 297 ), "A4", NULL }, 77 { MM2MM100( 148 ), MM2MM100( 210 ), "A5", NULL }, 78 { MM2MM100( 250 ), MM2MM100( 353 ), "ISOB4", NULL }, 79 { MM2MM100( 176 ), MM2MM100( 250 ), "ISOB5", NULL }, 80 { IN2MM100( 8.5 ), IN2MM100( 11 ), "Letter", "Note" }, 81 { IN2MM100( 8.5 ), IN2MM100( 14 ), "Legal", NULL }, 82 { IN2MM100( 11 ), IN2MM100( 17 ), "Tabloid", "11x17" }, | 20 *************************************************************/ 21 22 23 24// MARKER(update_precomp.py): autogen include statement, do not remove 25#include "precompiled_i18npool.hxx" 26 27#include <osl/diagnose.h> --- 47 unchanged lines hidden (view full) --- 75 { MM2MM100( 297 ), MM2MM100( 420 ), "A3", NULL }, 76 { MM2MM100( 210 ), MM2MM100( 297 ), "A4", NULL }, 77 { MM2MM100( 148 ), MM2MM100( 210 ), "A5", NULL }, 78 { MM2MM100( 250 ), MM2MM100( 353 ), "ISOB4", NULL }, 79 { MM2MM100( 176 ), MM2MM100( 250 ), "ISOB5", NULL }, 80 { IN2MM100( 8.5 ), IN2MM100( 11 ), "Letter", "Note" }, 81 { IN2MM100( 8.5 ), IN2MM100( 14 ), "Legal", NULL }, 82 { IN2MM100( 11 ), IN2MM100( 17 ), "Tabloid", "11x17" }, |
| 83 { 0, 0, NULL, NULL }, //User | 83 { 0, 0, NULL, NULL }, // User |
| 84 { MM2MM100( 125 ), MM2MM100( 176 ), "ISOB6", NULL }, 85 { MM2MM100( 229 ), MM2MM100( 324 ), "EnvC4", "C4" }, 86 { MM2MM100( 162 ), MM2MM100( 229 ), "EnvC5", "C5" }, 87 { MM2MM100( 114 ), MM2MM100( 162 ), "EnvC6", "C6" }, 88 { MM2MM100( 114 ), MM2MM100( 229 ), "EnvC65", NULL }, 89 { MM2MM100( 110 ), MM2MM100( 220 ), "EnvDL", "DL" }, | 84 { MM2MM100( 125 ), MM2MM100( 176 ), "ISOB6", NULL }, 85 { MM2MM100( 229 ), MM2MM100( 324 ), "EnvC4", "C4" }, 86 { MM2MM100( 162 ), MM2MM100( 229 ), "EnvC5", "C5" }, 87 { MM2MM100( 114 ), MM2MM100( 162 ), "EnvC6", "C6" }, 88 { MM2MM100( 114 ), MM2MM100( 229 ), "EnvC65", NULL }, 89 { MM2MM100( 110 ), MM2MM100( 220 ), "EnvDL", "DL" }, |
| 90 { MM2MM100( 180), MM2MM100( 270 ), NULL, NULL }, //Dia 91 { MM2MM100( 210), MM2MM100( 280 ), NULL, NULL }, //Screen | 90 { MM2MM100( 180), MM2MM100( 270 ), NULL, NULL }, // Dia Slide 91 { MM2MM100( 210), MM2MM100( 280 ), NULL, NULL }, // Screen (4:3) |
| 92 { IN2MM100( 17 ), IN2MM100( 22 ), "AnsiC", "CSheet" }, 93 { IN2MM100( 22 ), IN2MM100( 34 ), "AnsiD", "DSheet" }, 94 { IN2MM100( 34 ), IN2MM100( 44 ), "AnsiE", "ESheet" }, 95 { IN2MM100( 7.25 ), IN2MM100( 10.5 ), "Executive", NULL }, 96 //"Folio" is a different size in the PPD documentation than 8.5x11 97 //This "FanFoldGermanLegal" is known in the Philippines as | 92 { IN2MM100( 17 ), IN2MM100( 22 ), "AnsiC", "CSheet" }, 93 { IN2MM100( 22 ), IN2MM100( 34 ), "AnsiD", "DSheet" }, 94 { IN2MM100( 34 ), IN2MM100( 44 ), "AnsiE", "ESheet" }, 95 { IN2MM100( 7.25 ), IN2MM100( 10.5 ), "Executive", NULL }, 96 //"Folio" is a different size in the PPD documentation than 8.5x11 97 //This "FanFoldGermanLegal" is known in the Philippines as |
| 98 //"Legal" paper or "Long Bond Paper". The "Legal" name causing untold | 98 //"Legal" paper or "Long Bond Paper". The "Legal" name causing untold |
| 99 //misery, given the differently sized US "Legal" paper 100 { IN2MM100( 8.5 ), IN2MM100( 13 ), "FanFoldGermanLegal", NULL }, 101 { IN2MM100( 3.875 ), IN2MM100( 7.5 ), "EnvMonarch", "Monarch" }, 102 { IN2MM100( 3.625 ), IN2MM100( 6.5 ), "EnvPersonal", "Personal" }, 103 { IN2MM100( 3.875 ), IN2MM100( 8.875 ), "Env9", NULL }, 104 { IN2MM100( 4.125 ), IN2MM100( 9.5 ), "Env10", "Comm10" }, 105 { IN2MM100( 4.5 ), IN2MM100( 10.375 ), "Env11", NULL }, 106 { IN2MM100( 4.75 ), IN2MM100( 11 ), "Env12", NULL }, | 99 //misery, given the differently sized US "Legal" paper 100 { IN2MM100( 8.5 ), IN2MM100( 13 ), "FanFoldGermanLegal", NULL }, 101 { IN2MM100( 3.875 ), IN2MM100( 7.5 ), "EnvMonarch", "Monarch" }, 102 { IN2MM100( 3.625 ), IN2MM100( 6.5 ), "EnvPersonal", "Personal" }, 103 { IN2MM100( 3.875 ), IN2MM100( 8.875 ), "Env9", NULL }, 104 { IN2MM100( 4.125 ), IN2MM100( 9.5 ), "Env10", "Comm10" }, 105 { IN2MM100( 4.5 ), IN2MM100( 10.375 ), "Env11", NULL }, 106 { IN2MM100( 4.75 ), IN2MM100( 11 ), "Env12", NULL }, |
| 107 { MM2MM100( 184 ), MM2MM100( 260 ), NULL, NULL }, //Kai16 108 { MM2MM100( 130 ), MM2MM100( 184 ), NULL, NULL }, //Kai32 109 { MM2MM100( 140 ), MM2MM100( 203 ), NULL, NULL }, //BigKai32 110 { MM2MM100( 257 ), MM2MM100( 364 ), "B4", NULL }, //JIS 111 { MM2MM100( 182 ), MM2MM100( 257 ), "B5", NULL }, //JIS 112 { MM2MM100( 128 ), MM2MM100( 182 ), "B6", NULL }, //JIS | 107 { MM2MM100( 184 ), MM2MM100( 260 ), NULL, NULL }, // Kai16 108 { MM2MM100( 130 ), MM2MM100( 184 ), NULL, NULL }, // Kai32 109 { MM2MM100( 140 ), MM2MM100( 203 ), NULL, NULL }, // BigKai32 110 { MM2MM100( 257 ), MM2MM100( 364 ), "B4", NULL }, // JIS 111 { MM2MM100( 182 ), MM2MM100( 257 ), "B5", NULL }, // JIS 112 { MM2MM100( 128 ), MM2MM100( 182 ), "B6", NULL }, // JIS |
| 113 { IN2MM100( 17 ), IN2MM100( 11 ), "Ledger", NULL }, 114 { IN2MM100( 5.5 ), IN2MM100( 8.5 ), "Statement", NULL }, 115 { PT2MM100( 610 ), PT2MM100( 780 ), "Quarto", NULL }, 116 { IN2MM100( 10 ), IN2MM100( 14 ), "10x14", NULL }, 117 { IN2MM100( 5.5 ), IN2MM100( 11.5 ), "Env14", NULL }, 118 { MM2MM100( 324 ), MM2MM100( 458 ), "EnvC3", "C3" }, 119 { MM2MM100( 110 ), MM2MM100( 230 ), "EnvItalian", NULL }, 120 { IN2MM100( 14.875 ),IN2MM100( 11 ), "FanFoldUS", NULL }, --- 24 unchanged lines hidden (view full) --- 145 { MM2MM100( 31 ), MM2MM100( 44 ), "ISOB10", NULL }, 146 { MM2MM100( 458 ), MM2MM100( 648 ), "EnvC2", "C2" }, 147 { MM2MM100( 81 ), MM2MM100( 114 ), "EnvC7", "C7" }, 148 { MM2MM100( 57 ), MM2MM100( 81 ), "EnvC8", "C8" }, 149 { IN2MM100( 9 ), IN2MM100( 12 ), "ARCHA", NULL }, 150 { IN2MM100( 12 ), IN2MM100( 18 ), "ARCHB", NULL }, 151 { IN2MM100( 18 ), IN2MM100( 24 ), "ARCHC", NULL }, 152 { IN2MM100( 24 ), IN2MM100( 36 ), "ARCHD", NULL }, | 113 { IN2MM100( 17 ), IN2MM100( 11 ), "Ledger", NULL }, 114 { IN2MM100( 5.5 ), IN2MM100( 8.5 ), "Statement", NULL }, 115 { PT2MM100( 610 ), PT2MM100( 780 ), "Quarto", NULL }, 116 { IN2MM100( 10 ), IN2MM100( 14 ), "10x14", NULL }, 117 { IN2MM100( 5.5 ), IN2MM100( 11.5 ), "Env14", NULL }, 118 { MM2MM100( 324 ), MM2MM100( 458 ), "EnvC3", "C3" }, 119 { MM2MM100( 110 ), MM2MM100( 230 ), "EnvItalian", NULL }, 120 { IN2MM100( 14.875 ),IN2MM100( 11 ), "FanFoldUS", NULL }, --- 24 unchanged lines hidden (view full) --- 145 { MM2MM100( 31 ), MM2MM100( 44 ), "ISOB10", NULL }, 146 { MM2MM100( 458 ), MM2MM100( 648 ), "EnvC2", "C2" }, 147 { MM2MM100( 81 ), MM2MM100( 114 ), "EnvC7", "C7" }, 148 { MM2MM100( 57 ), MM2MM100( 81 ), "EnvC8", "C8" }, 149 { IN2MM100( 9 ), IN2MM100( 12 ), "ARCHA", NULL }, 150 { IN2MM100( 12 ), IN2MM100( 18 ), "ARCHB", NULL }, 151 { IN2MM100( 18 ), IN2MM100( 24 ), "ARCHC", NULL }, 152 { IN2MM100( 24 ), IN2MM100( 36 ), "ARCHD", NULL }, |
| 153 { IN2MM100( 36 ), IN2MM100( 48 ), "ARCHE", NULL } | 153 { IN2MM100( 36 ), IN2MM100( 48 ), "ARCHE", NULL }, 154 { MM2MM100( 157.5), MM2MM100( 280 ), NULL, NULL }, // Screen (16:9) 155 { MM2MM100( 175), MM2MM100( 280 ), NULL, NULL } // Screen (16:10) |
| 154}; 155 156static const size_t nTabSize = sizeof(aDinTab) / sizeof(aDinTab[0]); 157 158#define MAXSLOPPY 21 159 160bool PaperInfo::doSloppyFit() 161{ --- 16 unchanged lines hidden (view full) --- 178 } 179 } 180 181 return false; 182} 183 184bool PaperInfo::sloppyEqual(const PaperInfo &rOther) const 185{ | 156}; 157 158static const size_t nTabSize = sizeof(aDinTab) / sizeof(aDinTab[0]); 159 160#define MAXSLOPPY 21 161 162bool PaperInfo::doSloppyFit() 163{ --- 16 unchanged lines hidden (view full) --- 180 } 181 } 182 183 return false; 184} 185 186bool PaperInfo::sloppyEqual(const PaperInfo &rOther) const 187{ |
| 186 return | 188 return |
| 187 ( 188 (labs(m_nPaperWidth - rOther.m_nPaperWidth) < MAXSLOPPY) && 189 (labs(m_nPaperHeight - rOther.m_nPaperHeight) < MAXSLOPPY) 190 ); 191} 192 193long PaperInfo::sloppyFitPageDimension(long nDimension) 194{ --- 66 unchanged lines hidden (view full) --- 261 pclose( pPipe ); 262 263 if (pBuffer && *pBuffer != 0) 264 { 265 rtl::OString aPaper(pBuffer); 266 aPaper = aPaper.trim(); 267 static struct { const char *pName; Paper ePaper; } aCustoms [] = 268 { | 189 ( 190 (labs(m_nPaperWidth - rOther.m_nPaperWidth) < MAXSLOPPY) && 191 (labs(m_nPaperHeight - rOther.m_nPaperHeight) < MAXSLOPPY) 192 ); 193} 194 195long PaperInfo::sloppyFitPageDimension(long nDimension) 196{ --- 66 unchanged lines hidden (view full) --- 263 pclose( pPipe ); 264 265 if (pBuffer && *pBuffer != 0) 266 { 267 rtl::OString aPaper(pBuffer); 268 aPaper = aPaper.trim(); 269 static struct { const char *pName; Paper ePaper; } aCustoms [] = 270 { |
| 269 { "B0", PAPER_B0_ISO }, 270 { "B1", PAPER_B1_ISO }, 271 { "B2", PAPER_B2_ISO }, 272 { "B3", PAPER_B3_ISO }, 273 { "B4", PAPER_B4_ISO }, 274 { "B5", PAPER_B5_ISO }, 275 { "B6", PAPER_B6_ISO }, 276 { "B7", PAPER_B7_ISO }, 277 { "B8", PAPER_B8_ISO }, 278 { "B9", PAPER_B9_ISO }, 279 { "B10", PAPER_B10_ISO }, | 271 { "B0", PAPER_B0_ISO }, 272 { "B1", PAPER_B1_ISO }, 273 { "B2", PAPER_B2_ISO }, 274 { "B3", PAPER_B3_ISO }, 275 { "B4", PAPER_B4_ISO }, 276 { "B5", PAPER_B5_ISO }, 277 { "B6", PAPER_B6_ISO }, 278 { "B7", PAPER_B7_ISO }, 279 { "B8", PAPER_B8_ISO }, 280 { "B9", PAPER_B9_ISO }, 281 { "B10", PAPER_B10_ISO }, |
| 280 { "folio", PAPER_FANFOLD_LEGAL_DE }, 281 { "flsa", PAPER_FANFOLD_LEGAL_DE }, 282 { "flse", PAPER_FANFOLD_LEGAL_DE } 283 }; 284 285 bool bHalve = false; 286 287 size_t nExtraTabSize = sizeof(aCustoms) / sizeof(aCustoms[0]); --- 4 unchanged lines hidden (view full) --- 292 ePaper = aCustoms[i].ePaper; 293 break; 294 } 295 } 296 297 if (ePaper == PAPER_USER) 298 { 299 bHalve = !rtl_str_shortenedCompareIgnoreAsciiCase_WithLength( | 282 { "folio", PAPER_FANFOLD_LEGAL_DE }, 283 { "flsa", PAPER_FANFOLD_LEGAL_DE }, 284 { "flse", PAPER_FANFOLD_LEGAL_DE } 285 }; 286 287 bool bHalve = false; 288 289 size_t nExtraTabSize = sizeof(aCustoms) / sizeof(aCustoms[0]); --- 4 unchanged lines hidden (view full) --- 294 ePaper = aCustoms[i].ePaper; 295 break; 296 } 297 } 298 299 if (ePaper == PAPER_USER) 300 { 301 bHalve = !rtl_str_shortenedCompareIgnoreAsciiCase_WithLength( |
| 300 aPaper.getStr(), aPaper.getLength(), "half", 4, 4); | 302 aPaper.getStr(), aPaper.getLength(), "half", 4, 4); |
| 301 if (bHalve) 302 aPaper = aPaper.copy(4); 303 ePaper = PaperInfo::fromPSName(aPaper); 304 } 305 306 if (ePaper != PAPER_USER) 307 { 308 aInstance = PaperInfo(ePaper); --- 9 unchanged lines hidden (view full) --- 318 319 union paperword { char *string; int word; }; 320 321 // try LC_PAPER 322 paperword w, h; 323 w.string = nl_langinfo(_NL_PAPER_WIDTH); 324 h.string = nl_langinfo(_NL_PAPER_HEIGHT); 325 | 303 if (bHalve) 304 aPaper = aPaper.copy(4); 305 ePaper = PaperInfo::fromPSName(aPaper); 306 } 307 308 if (ePaper != PAPER_USER) 309 { 310 aInstance = PaperInfo(ePaper); --- 9 unchanged lines hidden (view full) --- 320 321 union paperword { char *string; int word; }; 322 323 // try LC_PAPER 324 paperword w, h; 325 w.string = nl_langinfo(_NL_PAPER_WIDTH); 326 h.string = nl_langinfo(_NL_PAPER_HEIGHT); 327 |
| 326 //glibc stores sizes as integer mm units | 328 // glibc stores sizes as integer mm units |
| 327 w.word *= 100; 328 h.word *= 100; 329 330 for ( size_t i = 0; i < nTabSize; ++i ) 331 { 332 if (i == PAPER_USER) continue; | 329 w.word *= 100; 330 h.word *= 100; 331 332 for ( size_t i = 0; i < nTabSize; ++i ) 333 { 334 if (i == PAPER_USER) continue; |
| 333 334 //glibc stores sizes as integer mm units, and so is inaccurate. To 335 //find a standard paper size we calculate the standard paper sizes 336 //into equally inaccurate mm and compare | 335 336 // glibc stores sizes as integer mm units, and so is inaccurate. To 337 // find a standard paper size we calculate the standard paper sizes 338 // into equally inaccurate mm and compare |
| 337 long width = (aDinTab[i].m_nWidth + 50) / 100; 338 long height = (aDinTab[i].m_nHeight + 50) / 100; | 339 long width = (aDinTab[i].m_nWidth + 50) / 100; 340 long height = (aDinTab[i].m_nHeight + 50) / 100; |
| 339 | 341 |
| 340 if (width == w.word/100 && height == h.word/100) 341 { 342 w.word = aDinTab[i].m_nWidth; 343 h.word = aDinTab[i].m_nHeight; 344 break; 345 } 346 } 347 --- 43 unchanged lines hidden (view full) --- 391 392PaperInfo::PaperInfo(long nPaperWidth, long nPaperHeight) 393 : m_eType(PAPER_USER), 394 m_nPaperWidth(nPaperWidth), 395 m_nPaperHeight(nPaperHeight) 396{ 397 for ( size_t i = 0; i < nTabSize; ++i ) 398 { | 342 if (width == w.word/100 && height == h.word/100) 343 { 344 w.word = aDinTab[i].m_nWidth; 345 h.word = aDinTab[i].m_nHeight; 346 break; 347 } 348 } 349 --- 43 unchanged lines hidden (view full) --- 393 394PaperInfo::PaperInfo(long nPaperWidth, long nPaperHeight) 395 : m_eType(PAPER_USER), 396 m_nPaperWidth(nPaperWidth), 397 m_nPaperHeight(nPaperHeight) 398{ 399 for ( size_t i = 0; i < nTabSize; ++i ) 400 { |
| 399 if ( | 401 if ( |
| 400 (nPaperWidth == aDinTab[i].m_nWidth) && 401 (nPaperHeight == aDinTab[i].m_nHeight) 402 ) 403 { 404 m_eType = static_cast<Paper>(i); 405 break; 406 } 407 } --- 7 unchanged lines hidden (view full) --- 415 416Paper PaperInfo::fromPSName(const rtl::OString &rName) 417{ 418 if (!rName.getLength()) 419 return PAPER_USER; 420 421 for ( size_t i = 0; i < nTabSize; ++i ) 422 { | 402 (nPaperWidth == aDinTab[i].m_nWidth) && 403 (nPaperHeight == aDinTab[i].m_nHeight) 404 ) 405 { 406 m_eType = static_cast<Paper>(i); 407 break; 408 } 409 } --- 7 unchanged lines hidden (view full) --- 417 418Paper PaperInfo::fromPSName(const rtl::OString &rName) 419{ 420 if (!rName.getLength()) 421 return PAPER_USER; 422 423 for ( size_t i = 0; i < nTabSize; ++i ) 424 { |
| 423 if (aDinTab[i].m_pPSName && | 425 if (aDinTab[i].m_pPSName && |
| 424 !rtl_str_compareIgnoreAsciiCase(aDinTab[i].m_pPSName, rName.getStr())) 425 { 426 return static_cast<Paper>(i); 427 } 428 else if (aDinTab[i].m_pAltPSName && 429 !rtl_str_compareIgnoreAsciiCase(aDinTab[i].m_pAltPSName, rName.getStr())) 430 { 431 return static_cast<Paper>(i); --- 70 unchanged lines hidden (view full) --- 502 ) 503 { 504 eType = PAPER_LETTER; 505 } 506 507 return eType; 508} 509 | 426 !rtl_str_compareIgnoreAsciiCase(aDinTab[i].m_pPSName, rName.getStr())) 427 { 428 return static_cast<Paper>(i); 429 } 430 else if (aDinTab[i].m_pAltPSName && 431 !rtl_str_compareIgnoreAsciiCase(aDinTab[i].m_pAltPSName, rName.getStr())) 432 { 433 return static_cast<Paper>(i); --- 70 unchanged lines hidden (view full) --- 504 ) 505 { 506 eType = PAPER_LETTER; 507 } 508 509 return eType; 510} 511 |
| 510/* vi:set tabstop=4 shiftwidth=4 expandtab: */ | 512/* vim: set noet sw=4 ts=4: */ |