| Revision | 123 (tree) |
|---|---|
| Time | 2011-03-04 22:56:55 |
| Author | nagaotakeyuki |
Applet support.
| @@ -33,6 +33,7 @@ | ||
| 33 | 33 | package jp.sourceforge.dvibrowser.dvicore.ctx; |
| 34 | 34 | import java.io.File; |
| 35 | 35 | import java.net.URL; |
| 36 | +import java.security.AccessControlException; | |
| 36 | 37 | import java.util.ArrayList; |
| 37 | 38 | import java.util.Collection; |
| 38 | 39 | import java.util.List; |
| @@ -64,7 +65,7 @@ | ||
| 64 | 65 | ProgressItem progress = getDviContext().getProgressRecorder().open("preparing " + filename); |
| 65 | 66 | List<URL> list = new ArrayList<URL>(); |
| 66 | 67 | try { |
| 67 | - { | |
| 68 | + try { | |
| 68 | 69 | if ("true".equals(System.getProperty("dvi.ctx.DefaultDviContext.usePackageShareDir"))) { |
| 69 | 70 | File f = new File("share", filename); |
| 70 | 71 | if (f.exists() && f.canRead()) { |
| @@ -73,10 +74,12 @@ | ||
| 73 | 74 | return list; |
| 74 | 75 | } |
| 75 | 76 | } |
| 77 | + } catch (AccessControlException ex) { | |
| 78 | + LOGGER.warning(ex.toString()); | |
| 76 | 79 | } |
| 77 | 80 | |
| 78 | 81 | LOGGER.finer("running kpsewhich: " + filename); |
| 79 | - { | |
| 82 | + try { | |
| 80 | 83 | URL url = null; |
| 81 | 84 | KpseWhich kpseWhich = new KpseWhich(this); |
| 82 | 85 | url = kpseWhich.findURL(filename, true); |
| @@ -83,17 +86,34 @@ | ||
| 83 | 86 | LOGGER.finer("kpsewhich result: " + filename + " => " + url); |
| 84 | 87 | if (url != null) |
| 85 | 88 | list.add(url); |
| 89 | + } catch (RuntimeException ex) { | |
| 90 | + LOGGER.warning(ex.toString()); | |
| 86 | 91 | } |
| 87 | 92 | |
| 88 | - { | |
| 93 | + try { | |
| 89 | 94 | URL u = ClassLoader.getSystemResource(systemResourcePath + "/" |
| 90 | 95 | + filename); |
| 91 | - LOGGER.fine("system resource by kpsewhich: " + filename + " => " + u); | |
| 96 | + LOGGER.fine("system resource by classloader: " + filename + " => " + u); | |
| 92 | 97 | if (u != null) |
| 93 | 98 | list.add(u); |
| 99 | + } catch (RuntimeException ex) { | |
| 100 | + LOGGER.warning(ex.toString()); | |
| 94 | 101 | } |
| 95 | - } catch (RuntimeException e) { | |
| 96 | - LOGGER.warning(e.toString()); | |
| 102 | + | |
| 103 | + try { | |
| 104 | + URL u = getClass().getResource(systemResourcePath + "/" | |
| 105 | + + filename); | |
| 106 | + LOGGER.fine("resource by classloader: " + filename + " => " + u); | |
| 107 | + if (u != null) | |
| 108 | + list.add(u); | |
| 109 | + } catch (RuntimeException ex) { | |
| 110 | + LOGGER.warning(ex.toString()); | |
| 111 | + } | |
| 112 | + | |
| 113 | + | |
| 114 | + if (list.size() == 0) { | |
| 115 | + LOGGER.warning("Failed to resolve file: " + filename); | |
| 116 | + } | |
| 97 | 117 | } finally { |
| 98 | 118 | progress.close(); |
| 99 | 119 | } |
| @@ -35,12 +35,16 @@ | ||
| 35 | 35 | import java.io.File; |
| 36 | 36 | import java.io.InputStream; |
| 37 | 37 | import java.net.URL; |
| 38 | +import java.security.AccessControlException; | |
| 38 | 39 | import java.util.Collection; |
| 39 | 40 | import java.util.Collections; |
| 41 | +import java.util.Comparator; | |
| 40 | 42 | import java.util.List; |
| 41 | 43 | import java.util.Map; |
| 42 | 44 | import java.util.Properties; |
| 45 | +import java.util.Set; | |
| 43 | 46 | import java.util.TreeMap; |
| 47 | +import java.util.TreeSet; | |
| 44 | 48 | import java.util.concurrent.ExecutionException; |
| 45 | 49 | import java.util.concurrent.Future; |
| 46 | 50 | import java.util.logging.Logger; |
| @@ -91,6 +95,13 @@ | ||
| 91 | 95 | private final CharacterCodeMapper characterCodeMapper |
| 92 | 96 | = new SimpleJisToUnicodeMapper(); |
| 93 | 97 | |
| 98 | + private boolean recordResources = false; | |
| 99 | + private final Set<URL> resources = new TreeSet<URL>(new Comparator<URL>() { | |
| 100 | + public int compare(URL arg0, URL arg1) { | |
| 101 | + return arg0.toString().compareTo(arg1.toString()); | |
| 102 | + } | |
| 103 | + }); | |
| 104 | + | |
| 94 | 105 | private final ProgressRecorder recorder = new ProgressRecorder(this) { |
| 95 | 106 | @Override |
| 96 | 107 | protected boolean removeEldestElement(ManagedProgressItem item) |
| @@ -125,13 +136,13 @@ | ||
| 125 | 136 | throws DviException |
| 126 | 137 | { |
| 127 | 138 | File cacheDir = getCacheDirectory(); |
| 128 | - if (!cacheDir.exists()) { | |
| 139 | + if (cacheDir != null && !cacheDir.exists()) { | |
| 129 | 140 | if (!cacheDir.mkdirs()) { |
| 130 | 141 | throw new DviException("Failed to create cache directory: " + cacheDir); |
| 131 | 142 | } |
| 132 | 143 | } |
| 133 | 144 | File tmpDir = getTemporaryDirectory(); |
| 134 | - if (!tmpDir.exists()) { | |
| 145 | + if (tmpDir != null && !tmpDir.exists()) { | |
| 135 | 146 | if (!tmpDir.mkdirs()) { |
| 136 | 147 | throw new DviException("Failed to create temporary directory: " + tmpDir); |
| 137 | 148 | } |
| @@ -144,7 +155,11 @@ | ||
| 144 | 155 | try { |
| 145 | 156 | URL url = DefaultDviContext.class.getResource("default-context.properties"); |
| 146 | 157 | Properties prop = new Properties(); |
| 147 | - prop.load(url.openStream()); | |
| 158 | + if (null != url) { | |
| 159 | + prop.load(url.openStream()); | |
| 160 | + } else { | |
| 161 | + LOGGER.warning("Failed to load default-context.properties"); | |
| 162 | + } | |
| 148 | 163 | return prop; |
| 149 | 164 | } catch (Exception e) { |
| 150 | 165 | throw new DviException(e); |
| @@ -319,6 +334,7 @@ | ||
| 319 | 334 | private static final CachedComputer<String, Collection<URL>> dviResourceComputer |
| 320 | 335 | = new CachedComputer<String, Collection<URL>> |
| 321 | 336 | (new ThreadedComputer<String, Collection<URL>>(1)); |
| 337 | + | |
| 322 | 338 | public URL getDviResource(String filename) throws DviException |
| 323 | 339 | { |
| 324 | 340 | if (filename.startsWith(DVICORE_INTERNAL_FILENAME_PREFIX)) { |
| @@ -329,12 +345,17 @@ | ||
| 329 | 345 | } |
| 330 | 346 | |
| 331 | 347 | Computation<String, Collection<URL>> c |
| 332 | - = new FileLocationResolver(this, "dvi/builtin", filename); | |
| 348 | + = new FileLocationResolver(this, "/dvi/builtin", filename); | |
| 333 | 349 | final Future<Collection<URL>> future = dviResourceComputer.compute(c); |
| 334 | 350 | try { |
| 335 | 351 | final Collection<URL> list = future.get(); |
| 336 | 352 | for (URL url : list) { |
| 337 | - LOGGER.finest("resolved resource: filename=" + filename + " url=" + url); | |
| 353 | + if (recordResources) { | |
| 354 | + LOGGER.info("resolved resource: filename=" + filename + " url=" + url); | |
| 355 | + resources.add(url); | |
| 356 | + } else { | |
| 357 | + LOGGER.finest("resolved resource: filename=" + filename + " url=" + url); | |
| 358 | + } | |
| 338 | 359 | return url; |
| 339 | 360 | } |
| 340 | 361 | return null; |
| @@ -350,17 +371,30 @@ | ||
| 350 | 371 | public LogicalFont mapLogicalFont(LogicalFont logicalFont) |
| 351 | 372 | throws DviException |
| 352 | 373 | { |
| 353 | - if (logicalFont == null) return null; | |
| 354 | - String prefix = getClass().getName(); | |
| 355 | - String face = getProperties().getProperty(prefix + ".fontMap." + logicalFont.fontSpec().name()); | |
| 356 | - if (face == null) return logicalFont; | |
| 357 | - LogicalFont newLogicalFont = logicalFont.renameTo(face); | |
| 358 | - LOGGER.fine("Map logical font: " + logicalFont + " => " + newLogicalFont); | |
| 359 | - return newLogicalFont; | |
| 374 | + LogicalFont mapped = logicalFont; | |
| 375 | + if (logicalFont != null) { | |
| 376 | + String prefix = getClass().getName(); | |
| 377 | + String faceKey = prefix + ".fontMap." + logicalFont.fontSpec().name(); | |
| 378 | + LOGGER.info("Face key: " + faceKey); | |
| 379 | + String face = getProperties().getProperty(faceKey); | |
| 380 | + LOGGER.info("Properties: " + getProperties()); | |
| 381 | + if (face != null) { | |
| 382 | + mapped = logicalFont.renameTo(face); | |
| 383 | + LOGGER.info("Rename logical font: " + logicalFont + " => " + mapped); | |
| 384 | + } | |
| 385 | + } | |
| 386 | + LOGGER.info("Map logical font: " + logicalFont + " => " + mapped); | |
| 387 | + return mapped; | |
| 360 | 388 | } |
| 361 | 389 | |
| 390 | + // N.B. System.getProperty() throws an exception when invoked | |
| 391 | + // from inside an applet. | |
| 362 | 392 | private static String getSystemProperty(String key) { |
| 363 | - return System.getProperty(key); | |
| 393 | + try { | |
| 394 | + return System.getProperty(key); | |
| 395 | + } catch (AccessControlException ex) { | |
| 396 | + return null; | |
| 397 | + } | |
| 364 | 398 | } |
| 365 | 399 | |
| 366 | 400 | private static final String userDir = getSystemProperty("user.dir"); |
| @@ -370,12 +404,14 @@ | ||
| 370 | 404 | public File getApplicationHomeDir() |
| 371 | 405 | throws DviException |
| 372 | 406 | { |
| 373 | - File home = new File(userDir); | |
| 374 | - File markFile = new File(home, "dvibrowser.jar"); | |
| 375 | - if (markFile.exists()) { | |
| 376 | - // It seems that we are using DviContext from within dvibrowser. | |
| 377 | - return home; | |
| 378 | - } | |
| 407 | + if (userDir != null) { | |
| 408 | + File home = new File(userDir); | |
| 409 | + File markFile = new File(home, "dvibrowser.jar"); | |
| 410 | + if (markFile.exists()) { | |
| 411 | + // It seems that we are using DviContext from within dvibrowser. | |
| 412 | + return home; | |
| 413 | + } | |
| 414 | + } | |
| 379 | 415 | return null; |
| 380 | 416 | } |
| 381 | 417 |
| @@ -384,11 +420,16 @@ | ||
| 384 | 420 | File appHome = getApplicationHomeDir(); |
| 385 | 421 | if (appHome == null) { |
| 386 | 422 | File tmpDir = getTemporaryDirectory(); |
| 387 | - return new File(tmpDir, "cache"); | |
| 423 | + if (tmpDir != null) { | |
| 424 | + return new File(tmpDir, "cache"); | |
| 425 | + } | |
| 388 | 426 | } else { |
| 389 | - File var = new File(userDir, "var"); | |
| 390 | - return new File(var, "cache"); | |
| 427 | + if (userDir != null) { | |
| 428 | + File var = new File(userDir, "var"); | |
| 429 | + return new File(var, "cache"); | |
| 430 | + } | |
| 391 | 431 | } |
| 432 | + return null; | |
| 392 | 433 | } |
| 393 | 434 | |
| 394 | 435 | public File getTemporaryDirectory() throws DviException |
| @@ -395,10 +436,13 @@ | ||
| 395 | 436 | { |
| 396 | 437 | File appHome = getApplicationHomeDir(); |
| 397 | 438 | if (appHome == null) { |
| 398 | - return new File(ioTmpDir, "dvicontext"); | |
| 439 | + if (ioTmpDir != null) { | |
| 440 | + return new File(ioTmpDir, "dvicontext"); | |
| 441 | + } | |
| 399 | 442 | } else { |
| 400 | 443 | return new File(appHome, "tmp"); |
| 401 | 444 | } |
| 445 | + return null; | |
| 402 | 446 | } |
| 403 | 447 | |
| 404 | 448 | private volatile String [] ghostscriptExecutables = null; |
| @@ -435,4 +479,16 @@ | ||
| 435 | 479 | public MetafontMode getDefaultMetafontMode() throws DviException { |
| 436 | 480 | return libraryDefaultMetafontMode; |
| 437 | 481 | } |
| 482 | + | |
| 483 | +public void setRecordResources(boolean recordResources) { | |
| 484 | + this.recordResources = recordResources; | |
| 438 | 485 | } |
| 486 | + | |
| 487 | +public boolean wantRecordResources() { | |
| 488 | + return recordResources; | |
| 489 | +} | |
| 490 | + | |
| 491 | +public Set<URL> getRecordedResources() { | |
| 492 | + return resources; | |
| 493 | +} | |
| 494 | +} |
| @@ -65,6 +65,7 @@ | ||
| 65 | 65 | |
| 66 | 66 | public void fill(int c) { |
| 67 | 67 | for (int i=0; i<buf.length; i++) |
| 68 | +// buf[i] = 0xff000000 | c; | |
| 68 | 69 | buf[i] = c; |
| 69 | 70 | } |
| 70 | 71 |
| @@ -128,7 +129,7 @@ | ||
| 128 | 129 | } |
| 129 | 130 | } |
| 130 | 131 | |
| 131 | - private static int blend(int c1, int c2, final int alpha10) { | |
| 132 | + private static int blendARGB(int c1, int c2, final int alpha10) { | |
| 132 | 133 | int r, g, b; |
| 133 | 134 | |
| 134 | 135 | b = c1 & 0xff; |
| @@ -147,7 +148,30 @@ | ||
| 147 | 148 | r += (alpha10 * ((c2 & 0xff) - r)) >>> 10; |
| 148 | 149 | r &= 0xff; |
| 149 | 150 | |
| 150 | - return (r << 16) | (g << 8) | b; | |
| 151 | + return 0xff000000 | (r << 16) | (g << 8) | b; | |
| 151 | 152 | } |
| 153 | + | |
| 154 | + private static int blend(int c1, int c2, final int alpha10) { | |
| 155 | + int r, g, b; | |
| 156 | + | |
| 157 | + b = c1 & 0xff; | |
| 158 | + b += (alpha10 * ((c2 & 0xff) - b)) >>> 10; | |
| 159 | + b &= 0xff; | |
| 160 | + c1 >>>= 8; | |
| 161 | + c2 >>>= 8; | |
| 162 | + | |
| 163 | + g = c1 & 0xff; | |
| 164 | + g += (alpha10 * ((c2 & 0xff) - g)) >>> 10; | |
| 165 | + g &= 0xff; | |
| 166 | + c1 >>>= 8; | |
| 167 | + c2 >>>= 8; | |
| 168 | + | |
| 169 | + r = c1 & 0xff; | |
| 170 | + r += (alpha10 * ((c2 & 0xff) - r)) >>> 10; | |
| 171 | + r &= 0xff; | |
| 172 | + | |
| 173 | + return (r << 16) | (g << 8) | b; | |
| 174 | + } | |
| 175 | + | |
| 152 | 176 | } |
| 153 | 177 | //BenchMark: dvidump: 535 samples in 19.174 sec. 27.902 samples/sec. 35.839 msec./sample. |
| @@ -38,6 +38,7 @@ | ||
| 38 | 38 | import java.awt.image.BufferedImage; |
| 39 | 39 | import java.awt.image.DataBufferByte; |
| 40 | 40 | import java.awt.image.Raster; |
| 41 | +import java.util.logging.Logger; | |
| 41 | 42 | |
| 42 | 43 | import jp.sourceforge.dvibrowser.dvicore.DviException; |
| 43 | 44 | import jp.sourceforge.dvibrowser.dvicore.DviFontSpec; |
| @@ -45,11 +46,14 @@ | ||
| 45 | 46 | import jp.sourceforge.dvibrowser.dvicore.DviUnit; |
| 46 | 47 | import jp.sourceforge.dvibrowser.dvicore.api.CharacterCodeMapper; |
| 47 | 48 | import jp.sourceforge.dvibrowser.dvicore.api.DviContextSupport; |
| 49 | +import jp.sourceforge.dvibrowser.dvicore.util.DviUtils; | |
| 48 | 50 | |
| 49 | 51 | |
| 50 | 52 | public class AWTDynamicPkFont |
| 51 | 53 | extends AbstractDynamicPkFont |
| 52 | 54 | { |
| 55 | + private static final Logger LOGGER = Logger.getLogger(AWTDynamicPkFont.class.getName()); | |
| 56 | + | |
| 53 | 57 | private static final long serialVersionUID = 6218737476095318238L; |
| 54 | 58 | private final Font font; |
| 55 | 59 | private CharacterCodeMapper mapper; |
| @@ -87,9 +91,10 @@ | ||
| 87 | 91 | throws DviException |
| 88 | 92 | { |
| 89 | 93 | String unicode = mapToUnicode(lf, code); |
| 94 | + | |
| 95 | + LOGGER.finest("str=(" + unicode + ") code=0x" + Integer.toHexString(code) | |
| 96 | + + " hex=" + DviUtils.hexDump(unicode)); | |
| 90 | 97 | |
| 91 | -// System.out.println("str=(" + unicode + ") code=0x" + Integer.toHexString(code) + " hex=" + DviUtils.hexDump(unicode)); | |
| 92 | - | |
| 93 | 98 | Graphics2D g; |
| 94 | 99 | BufferedImage img; |
| 95 | 100 |
| @@ -38,7 +38,9 @@ | ||
| 38 | 38 | import java.io.OutputStream; |
| 39 | 39 | import java.io.PrintWriter; |
| 40 | 40 | import java.io.StringWriter; |
| 41 | +import java.net.URL; | |
| 41 | 42 | import java.util.ArrayList; |
| 43 | +import java.util.Set; | |
| 42 | 44 | import java.util.logging.Level; |
| 43 | 45 | import java.util.logging.Logger; |
| 44 | 46 |
| @@ -56,6 +58,7 @@ | ||
| 56 | 58 | import jp.sourceforge.dvibrowser.dvicore.ctx.DefaultDviContext; |
| 57 | 59 | import jp.sourceforge.dvibrowser.dvicore.gui.swing.ViewSpec; |
| 58 | 60 | import jp.sourceforge.dvibrowser.dvicore.image.split.ImageFileConfig; |
| 61 | +import jp.sourceforge.dvibrowser.dvicore.util.Benchmark; | |
| 59 | 62 | import jp.sourceforge.dvibrowser.dvicore.util.DviUtils; |
| 60 | 63 | import jp.sourceforge.dvibrowser.dvicore.util.ZipBuilder; |
| 61 | 64 |
| @@ -66,6 +69,7 @@ | ||
| 66 | 69 | private static final String OPT_SHRINK_FACTOR = "--shrink-factor="; |
| 67 | 70 | private static final String OPT_DPI = "--dpi="; |
| 68 | 71 | private static final String OPT_OUTPUT_FILE = "--output-file="; |
| 72 | + private static final String OPT_RESOURCES_FILE = "--resources-file="; | |
| 69 | 73 | private static final String OPT_PAPER_SIZE = "--paper-size="; |
| 70 | 74 | private static final String OPT_USE_BBOX = "--use-bbox="; |
| 71 | 75 | private static final String OPT_PADDING = "--padding="; |
| @@ -82,6 +86,7 @@ | ||
| 82 | 86 | private DviPaperSize paperSize; |
| 83 | 87 | private ImageFileConfig imageFileConfig; |
| 84 | 88 | private int padding; |
| 89 | + private File resourcesFile; | |
| 85 | 90 | |
| 86 | 91 | public Config(DviContextSupport dcs) { |
| 87 | 92 | super(dcs); |
| @@ -167,6 +172,13 @@ | ||
| 167 | 172 | if (paperSize == null) { |
| 168 | 173 | throw new DviException("Unrecognized papersize: " + s); |
| 169 | 174 | } |
| 175 | + } else if (a.startsWith(OPT_RESOURCES_FILE)) { | |
| 176 | + String s = a.substring(OPT_RESOURCES_FILE.length()).trim(); | |
| 177 | + if (!"".equals(s)) { | |
| 178 | + setResourcesFile(new File(s)); | |
| 179 | + } else { | |
| 180 | + throw new DviException("Output filename is empty."); | |
| 181 | + } | |
| 170 | 182 | } else if (a.startsWith(OPT_OUTPUT_FILE)) { |
| 171 | 183 | String s = a.substring(OPT_OUTPUT_FILE.length()).trim(); |
| 172 | 184 | if (!"".equals(s)) { |
| @@ -194,7 +206,15 @@ | ||
| 194 | 206 | } |
| 195 | 207 | } |
| 196 | 208 | |
| 197 | - private void setPaddingSize(int padding) { | |
| 209 | + private void setResourcesFile(File file) { | |
| 210 | + this.resourcesFile = file; | |
| 211 | + } | |
| 212 | + | |
| 213 | + public File getResourcesFile() { | |
| 214 | + return resourcesFile; | |
| 215 | + } | |
| 216 | + | |
| 217 | + private void setPaddingSize(int padding) { | |
| 198 | 218 | this.setPadding(padding); |
| 199 | 219 | } |
| 200 | 220 |
| @@ -220,6 +240,7 @@ | ||
| 220 | 240 | pw.println(" --dpi=N Set output DPI to N"); |
| 221 | 241 | pw.println(" --shrink-factor=N Set shrink factor to N (1--1024)"); |
| 222 | 242 | pw.println(" --output-file=F Set output zip file to F"); |
| 243 | + pw.println(" --resources-file=F Set resources file to F"); | |
| 223 | 244 | pw.println(" --padding=N Set padding size to N"); |
| 224 | 245 | return sw.toString(); |
| 225 | 246 | } |
| @@ -313,7 +334,8 @@ | ||
| 313 | 334 | public static void main(String[] args) |
| 314 | 335 | { |
| 315 | 336 | try { |
| 316 | - DviContext ctx = new DefaultDviContext(); | |
| 337 | + DefaultDviContext ctx = new DefaultDviContext(); | |
| 338 | + | |
| 317 | 339 | Config config = new Config(ctx); |
| 318 | 340 | config.parseArguments(args); |
| 319 | 341 |
| @@ -323,10 +345,34 @@ | ||
| 323 | 345 | ("Unrecognized command line: " + DviUtils.join(" ", args)); |
| 324 | 346 | } |
| 325 | 347 | |
| 348 | + File resourcesFile = config.getResourcesFile(); | |
| 349 | + | |
| 350 | + if (resourcesFile != null) { | |
| 351 | + ctx.setRecordResources(true); | |
| 352 | + } | |
| 353 | + | |
| 354 | + Benchmark benchmark = new Benchmark(); | |
| 355 | + benchmark.begin("dvi rendering"); | |
| 356 | + benchmark.addSample(); | |
| 326 | 357 | ConvertToImage app = new ConvertToImage(ctx); |
| 327 | 358 | int retcode = app.convert(config); |
| 359 | + benchmark.end(); | |
| 328 | 360 | |
| 329 | - LOGGER.info("Finished."); | |
| 361 | + if (resourcesFile != null) { | |
| 362 | + Set<URL> resources = ctx.getRecordedResources(); | |
| 363 | + FileOutputStream fos = new FileOutputStream(resourcesFile); | |
| 364 | + PrintWriter out = new PrintWriter(fos); | |
| 365 | + for (URL url : resources) { | |
| 366 | + out.println(url); | |
| 367 | + } | |
| 368 | + out.flush(); | |
| 369 | + out.close(); | |
| 370 | + fos.close(); | |
| 371 | + } | |
| 372 | + | |
| 373 | + LOGGER.info("Finished: " + benchmark.format()); | |
| 374 | + // INT_ARGB: Finished: Benchmark result: dvi rendering: 1 samples in 68.182 sec. 0.015 samples/sec. 68182 msec./sample. | |
| 375 | + // INT_RGB: Finished: Benchmark result: dvi rendering: 1 samples in 62.976 sec. 0.016 samples/sec. 62976 msec./sample. | |
| 330 | 376 | System.exit(retcode); |
| 331 | 377 | } catch (Exception e) { |
| 332 | 378 | DviUtils.logStackTrace(LOGGER, Level.WARNING, e); |
| @@ -22,4 +22,17 @@ | ||
| 22 | 22 | <scope>test</scope> |
| 23 | 23 | </dependency> |
| 24 | 24 | </dependencies> |
| 25 | + <distributionManagement> | |
| 26 | + <repository> | |
| 27 | + <id>aelauth1-release</id> | |
| 28 | + <name>aelauth1</name> | |
| 29 | + <url>scp://aelauth1.aiit.ac.jp:49157/var/repo/maven2/release</url> | |
| 30 | + </repository> | |
| 31 | + <snapshotRepository> | |
| 32 | + <id>aelauth1-snapshot</id> | |
| 33 | + <name>aelauth1-snapshot</name> | |
| 34 | + <url>scp://aelauth1.aiit.ac.jp:49157/var/repo/maven2/snapshot</url> | |
| 35 | + </snapshotRepository> | |
| 36 | + </distributionManagement> | |
| 37 | + | |
| 25 | 38 | </project> |