After a decade (plus change) less prudent side finally won internal struggle.
Unified · Split
| @@ -1366,7 +1366,12 @@ ML (mbtoutf8 (value s_v)) · 1365 unmodified lines | |||
| 1366 | CAMLreturn (ret_v); | 1366 | CAMLreturn (ret_v); |
| 1367 | } | 1367 | } |
| 1368 | 1368 | ||
| 1369 | static void * mainloop (void UNUSED_ATTR *unused) | 1369 | enum { |
| 1370 | Copen, Ccs, Cfreepage, Cfreetile, Csearch, Cgeometry, Creqlayout, | ||
| 1371 | Cpage, Ctile, Ctrimset, Csettrim, Csliceh, Cinterrupt | ||
| 1372 | }; | ||
| 1373 | |||
| 1374 | static void *mainloop (void UNUSED_ATTR *unused) | ||
| 1370 | { | 1375 | { |
| 1371 | char *p = NULL; | 1376 | char *p = NULL; |
| 1372 | int len, ret, oldlen = 0; | 1377 | int len, ret, oldlen = 0; |
| @@ -1389,9 +1394,8 @@ static void * mainloop (void UNUSED_ATTR *unused) · 16 unmodified lines | |||
| 1389 | readdata (state.csock, p, len); | 1394 | readdata (state.csock, p, len); |
| 1390 | p[len] = 0; | 1395 | p[len] = 0; |
| 1391 | 1396 | ||
| 1392 | #define CASE(n) else if (!strncmp (#n, p, sizeof (#n) - 1)) | 1397 | switch (p[len-1]) { |
| 1393 | if (0) ; | 1398 | case Copen: { |
| 1394 | CASE (open) { | ||
| 1395 | int off, usedoccss, ok = 0, layouth; | 1399 | int off, usedoccss, ok = 0, layouth; |
| 1396 | char *password; | 1400 | char *password; |
| 1397 | char *filename; | 1401 | char *filename; |
| @@ -1399,12 +1403,12 @@ static void * mainloop (void UNUSED_ATTR *unused) · 1 unmodified line | |||
| 1399 | size_t filenamelen; | 1403 | size_t filenamelen; |
| 1400 | 1404 | ||
| 1401 | fz_var (ok); | 1405 | fz_var (ok); |
| 1402 | ret = sscanf (p + 5, " %d %d %n", &usedoccss, &layouth, &off); | 1406 | ret = sscanf (p, " %d %d %n", &usedoccss, &layouth, &off); |
| 1403 | if (ret != 2) { | 1407 | if (ret != 2) { |
| 1404 | errx (1, "malformed open `%.*s' ret=%d", len, p, ret); | 1408 | errx (1, "malformed open `%.*s' ret=%d", len, p, ret); |
| 1405 | } | 1409 | } |
| 1406 | 1410 | ||
| 1407 | filename = p + 5 + off; | 1411 | filename = p + off; |
| 1408 | filenamelen = strlen (filename); | 1412 | filenamelen = strlen (filename); |
| 1409 | password = filename + filenamelen + 1; | 1413 | password = filename + filenamelen + 1; |
| 1410 | 1414 | ||
| @@ -1431,11 +1435,12 @@ static void * mainloop (void UNUSED_ATTR *unused) · 20 unmodified lines | |||
| 1431 | } | 1435 | } |
| 1432 | unlock ("open"); | 1436 | unlock ("open"); |
| 1433 | state.needoutline = ok; | 1437 | state.needoutline = ok; |
| 1438 | break; | ||
| 1434 | } | 1439 | } |
| 1435 | CASE (cs) { | 1440 | case Ccs: { |
| 1436 | int i, colorspace; | 1441 | int i, colorspace; |
| 1437 | 1442 | ||
| 1438 | ret = sscanf (p + 2, " %d", &colorspace); | 1443 | ret = sscanf (p, " %d", &colorspace); |
| 1439 | if (ret != 1) { | 1444 | if (ret != 1) { |
| 1440 | errx (1, "malformed cs `%.*s' ret=%d", len, p, ret); | 1445 | errx (1, "malformed cs `%.*s' ret=%d", len, p, ret); |
| 1441 | } | 1446 | } |
| @@ -1446,41 +1451,44 @@ static void * mainloop (void UNUSED_ATTR *unused) · 4 unmodified lines | |||
| 1446 | state.tex.owners[i].slice = NULL; | 1451 | state.tex.owners[i].slice = NULL; |
| 1447 | } | 1452 | } |
| 1448 | unlock ("cs"); | 1453 | unlock ("cs"); |
| 1454 | break; | ||
| 1449 | } | 1455 | } |
| 1450 | CASE (freepage) { | 1456 | case Cfreepage: { |
| 1451 | void *ptr; | 1457 | void *ptr; |
| 1452 | 1458 | ||
| 1453 | ret = sscanf (p + 8, " %" SCNxPTR, (uintptr_t *) &ptr); | 1459 | ret = sscanf (p, " %" SCNxPTR, (uintptr_t *) &ptr); |
| 1454 | if (ret != 1) { | 1460 | if (ret != 1) { |
| 1455 | errx (1, "malformed freepage `%.*s' ret=%d", len, p, ret); | 1461 | errx (1, "malformed freepage `%.*s' ret=%d", len, p, ret); |
| 1456 | } | 1462 | } |
| 1457 | lock ("freepage"); | 1463 | lock ("freepage"); |
| 1458 | freepage (ptr); | 1464 | freepage (ptr); |
| 1459 | unlock ("freepage"); | 1465 | unlock ("freepage"); |
| 1466 | break; | ||
| 1460 | } | 1467 | } |
| 1461 | CASE (freetile) { | 1468 | case Cfreetile: { |
| 1462 | void *ptr; | 1469 | void *ptr; |
| 1463 | 1470 | ||
| 1464 | ret = sscanf (p + 8, " %" SCNxPTR, (uintptr_t *) &ptr); | 1471 | ret = sscanf (p, " %" SCNxPTR, (uintptr_t *) &ptr); |
| 1465 | if (ret != 1) { | 1472 | if (ret != 1) { |
| 1466 | errx (1, "malformed freetile `%.*s' ret=%d", len, p, ret); | 1473 | errx (1, "malformed freetile `%.*s' ret=%d", len, p, ret); |
| 1467 | } | 1474 | } |
| 1468 | lock ("freetile"); | 1475 | lock ("freetile"); |
| 1469 | freetile (ptr); | 1476 | freetile (ptr); |
| 1470 | unlock ("freetile"); | 1477 | unlock ("freetile"); |
| 1478 | break; | ||
| 1471 | } | 1479 | } |
| 1472 | CASE (search) { | 1480 | case Csearch: { |
| 1473 | int icase, pageno, y, len2, forward; | 1481 | int icase, pageno, y, len2, forward; |
| 1474 | char *pattern; | 1482 | char *pattern; |
| 1475 | regex_t re; | 1483 | regex_t re; |
| 1476 | 1484 | ||
| 1477 | ret = sscanf (p + 6, " %d %d %d %d,%n", | 1485 | ret = sscanf (p, " %d %d %d %d,%n", |
| 1478 | &icase, &pageno, &y, &forward, &len2); | 1486 | &icase, &pageno, &y, &forward, &len2); |
| 1479 | if (ret != 4) { | 1487 | if (ret != 4) { |
| 1480 | errx (1, "malformed search `%s' ret=%d", p, ret); | 1488 | errx (1, "malformed search `%s' ret=%d", p, ret); |
| 1481 | } | 1489 | } |
| 1482 | 1490 | ||
| 1483 | pattern = p + 6 + len2; | 1491 | pattern = p + len2; |
| 1484 | ret = regcomp (&re, pattern, | 1492 | ret = regcomp (&re, pattern, |
| 1485 | REG_EXTENDED | (icase ? REG_ICASE : 0)); | 1493 | REG_EXTENDED | (icase ? REG_ICASE : 0)); |
| 1486 | if (ret) { | 1494 | if (ret) { |
| @@ -1496,12 +1504,13 @@ static void * mainloop (void UNUSED_ATTR *unused) · 9 unmodified lines | |||
| 1496 | unlock ("search"); | 1504 | unlock ("search"); |
| 1497 | regfree (&re); | 1505 | regfree (&re); |
| 1498 | } | 1506 | } |
| 1507 | break; | ||
| 1499 | } | 1508 | } |
| 1500 | CASE (geometry) { | 1509 | case Cgeometry: { |
| 1501 | int w, h, fitmodel; | 1510 | int w, h, fitmodel; |
| 1502 | 1511 | ||
| 1503 | printd ("clear"); | 1512 | printd ("clear"); |
| 1504 | ret = sscanf (p + 8, " %d %d %d", &w, &h, &fitmodel); | 1513 | ret = sscanf (p, " %d %d %d", &w, &h, &fitmodel); |
| 1505 | if (ret != 3) { | 1514 | if (ret != 3) { |
| 1506 | errx (1, "malformed geometry `%.*s' ret=%d", len, p, ret); | 1515 | errx (1, "malformed geometry `%.*s' ret=%d", len, p, ret); |
| 1507 | } | 1516 | } |
| @@ -1521,16 +1530,16 @@ static void * mainloop (void UNUSED_ATTR *unused) · 13 unmodified lines | |||
| 1521 | state.gen++; | 1530 | state.gen++; |
| 1522 | unlock ("geometry"); | 1531 | unlock ("geometry"); |
| 1523 | printd ("continue %d", state.pagecount); | 1532 | printd ("continue %d", state.pagecount); |
| 1533 | break; | ||
| 1524 | } | 1534 | } |
| 1525 | CASE (reqlayout) { | 1535 | case Creqlayout: { |
| 1526 | char *nameddest; | 1536 | char *nameddest; |
| 1527 | int rotate, off, h; | 1537 | int rotate, off, h; |
| 1528 | int fitmodel; | 1538 | int fitmodel; |
| 1529 | pdf_document *pdf; | 1539 | pdf_document *pdf; |
| 1530 | 1540 | ||
| 1531 | printd ("clear"); | 1541 | printd ("clear"); |
| 1532 | ret = sscanf (p + 9, " %d %d %d %n", | 1542 | ret = sscanf (p, " %d %d %d %n", &rotate, &fitmodel, &h, &off); |
| 1533 | &rotate, &fitmodel, &h, &off); | ||
| 1534 | if (ret != 3) { | 1543 | if (ret != 3) { |
| 1535 | errx (1, "bad reqlayout line `%.*s' ret=%d", len, p, ret); | 1544 | errx (1, "bad reqlayout line `%.*s' ret=%d", len, p, ret); |
| 1536 | } | 1545 | } |
| @@ -1545,7 +1554,7 @@ static void * mainloop (void UNUSED_ATTR *unused) · 8 unmodified lines | |||
| 1545 | layout (); | 1554 | layout (); |
| 1546 | process_outline (); | 1555 | process_outline (); |
| 1547 | 1556 | ||
| 1548 | nameddest = p + 9 + off; | 1557 | nameddest = p + off; |
| 1549 | if (pdf && nameddest && *nameddest) { | 1558 | if (pdf && nameddest && *nameddest) { |
| 1550 | fz_point xy; | 1559 | fz_point xy; |
| 1551 | struct pagedim *pdim; | 1560 | struct pagedim *pdim; |
| @@ -1559,13 +1568,14 @@ static void * mainloop (void UNUSED_ATTR *unused) · 7 unmodified lines | |||
| 1559 | state.gen++; | 1568 | state.gen++; |
| 1560 | unlock ("reqlayout"); | 1569 | unlock ("reqlayout"); |
| 1561 | printd ("continue %d", state.pagecount); | 1570 | printd ("continue %d", state.pagecount); |
| 1571 | break; | ||
| 1562 | } | 1572 | } |
| 1563 | CASE (page) { | 1573 | case Cpage: { |
| 1564 | double a, b; | 1574 | double a, b; |
| 1565 | struct page *page; | 1575 | struct page *page; |
| 1566 | int pageno, pindex; | 1576 | int pageno, pindex; |
| 1567 | 1577 | ||
| 1568 | ret = sscanf (p + 4, " %d %d", &pageno, &pindex); | 1578 | ret = sscanf (p, " %d %d", &pageno, &pindex); |
| 1569 | if (ret != 2) { | 1579 | if (ret != 2) { |
| 1570 | errx (1, "bad page line `%.*s' ret=%d", len, p, ret); | 1580 | errx (1, "bad page line `%.*s' ret=%d", len, p, ret); |
| 1571 | } | 1581 | } |
| @@ -1577,15 +1587,16 @@ static void * mainloop (void UNUSED_ATTR *unused) · 5 unmodified lines | |||
| 1577 | unlock ("page"); | 1587 | unlock ("page"); |
| 1578 | 1588 | ||
| 1579 | printd ("page %" PRIxPTR " %f", (uintptr_t) page, b - a); | 1589 | printd ("page %" PRIxPTR " %f", (uintptr_t) page, b - a); |
| 1590 | break; | ||
| 1580 | } | 1591 | } |
| 1581 | CASE (tile) { | 1592 | case Ctile: { |
| 1582 | int x, y, w, h; | 1593 | int x, y, w, h; |
| 1583 | struct page *page; | 1594 | struct page *page; |
| 1584 | struct tile *tile; | 1595 | struct tile *tile; |
| 1585 | double a, b; | 1596 | double a, b; |
| 1586 | void *data; | 1597 | void *data; |
| 1587 | 1598 | ||
| 1588 | ret = sscanf (p + 4, " %" SCNxPTR " %d %d %d %d %" SCNxPTR, | 1599 | ret = sscanf (p, " %" SCNxPTR " %d %d %d %d %" SCNxPTR, |
| 1589 | (uintptr_t *) &page, &x, &y, &w, &h, | 1600 | (uintptr_t *) &page, &x, &y, &w, &h, |
| 1590 | (uintptr_t *) &data); | 1601 | (uintptr_t *) &data); |
| 1591 | if (ret != 6) { | 1602 | if (ret != 6) { |
| @@ -1602,12 +1613,13 @@ static void * mainloop (void UNUSED_ATTR *unused) · 10 unmodified lines | |||
| 1602 | x, y, (uintptr_t) (tile), | 1613 | x, y, (uintptr_t) (tile), |
| 1603 | tile->w * tile->h * tile->pixmap->n, | 1614 | tile->w * tile->h * tile->pixmap->n, |
| 1604 | b - a); | 1615 | b - a); |
| 1616 | break; | ||
| 1605 | } | 1617 | } |
| 1606 | CASE (trimset) { | 1618 | case Ctrimset: { |
| 1607 | fz_irect fuzz; | 1619 | fz_irect fuzz; |
| 1608 | int trimmargins; | 1620 | int trimmargins; |
| 1609 | 1621 | ||
| 1610 | ret = sscanf (p + 7, " %d %d %d %d %d", | 1622 | ret = sscanf (p, " %d %d %d %d %d", |
| 1611 | &trimmargins, &fuzz.x0, &fuzz.y0, &fuzz.x1, &fuzz.y1); | 1623 | &trimmargins, &fuzz.x0, &fuzz.y0, &fuzz.x1, &fuzz.y1); |
| 1612 | if (ret != 5) { | 1624 | if (ret != 5) { |
| 1613 | errx (1, "malformed trimset `%.*s' ret=%d", len, p, ret); | 1625 | errx (1, "malformed trimset `%.*s' ret=%d", len, p, ret); |
| @@ -1620,12 +1632,13 @@ static void * mainloop (void UNUSED_ATTR *unused) · 6 unmodified lines | |||
| 1620 | state.trimfuzz = fuzz; | 1632 | state.trimfuzz = fuzz; |
| 1621 | } | 1633 | } |
| 1622 | unlock ("trimset"); | 1634 | unlock ("trimset"); |
| 1635 | break; | ||
| 1623 | } | 1636 | } |
| 1624 | CASE (settrim) { | 1637 | case Csettrim: { |
| 1625 | fz_irect fuzz; | 1638 | fz_irect fuzz; |
| 1626 | int trimmargins; | 1639 | int trimmargins; |
| 1627 | 1640 | ||
| 1628 | ret = sscanf (p + 7, " %d %d %d %d %d", | 1641 | ret = sscanf (p, " %d %d %d %d %d", |
| 1629 | &trimmargins, &fuzz.x0, &fuzz.y0, &fuzz.x1, &fuzz.y1); | 1642 | &trimmargins, &fuzz.x0, &fuzz.y0, &fuzz.x1, &fuzz.y1); |
| 1630 | if (ret != 5) { | 1643 | if (ret != 5) { |
| 1631 | errx (1, "malformed settrim `%.*s' ret=%d", len, p, ret); | 1644 | errx (1, "malformed settrim `%.*s' ret=%d", len, p, ret); |
| @@ -1646,11 +1659,12 @@ static void * mainloop (void UNUSED_ATTR *unused) · 14 unmodified lines | |||
| 1646 | process_outline (); | 1659 | process_outline (); |
| 1647 | unlock ("settrim"); | 1660 | unlock ("settrim"); |
| 1648 | printd ("continue %d", state.pagecount); | 1661 | printd ("continue %d", state.pagecount); |
| 1662 | break; | ||
| 1649 | } | 1663 | } |
| 1650 | CASE (sliceh) { | 1664 | case Csliceh: { |
| 1651 | int h; | 1665 | int h; |
| 1652 | 1666 | ||
| 1653 | ret = sscanf (p + 6, " %d", &h); | 1667 | ret = sscanf (p, " %d", &h); |
| 1654 | if (ret != 1) { | 1668 | if (ret != 1) { |
| 1655 | errx (1, "malformed sliceh `%.*s' ret=%d", len, p, ret); | 1669 | errx (1, "malformed sliceh `%.*s' ret=%d", len, p, ret); |
| 1656 | } | 1670 | } |
| @@ -1662,12 +1676,12 @@ static void * mainloop (void UNUSED_ATTR *unused) · 5 unmodified lines | |||
| 1662 | state.tex.owners[i].slice = NULL; | 1676 | state.tex.owners[i].slice = NULL; |
| 1663 | } | 1677 | } |
| 1664 | } | 1678 | } |
| 1679 | break; | ||
| 1665 | } | 1680 | } |
| 1666 | CASE (interrupt) { | 1681 | case Cinterrupt: |
| 1667 | printd ("vmsg interrupted"); | 1682 | printd ("vmsg interrupted"); |
| 1668 | } | 1683 | break; |
| 1669 | #undef CASE | 1684 | default: |
| 1670 | else { | ||
| 1671 | errx (1, "unknown command %.*s", len, p); | 1685 | errx (1, "unknown command %.*s", len, p); |
| 1672 | } | 1686 | } |
| 1673 | } | 1687 | } |
| @@ -184,10 +184,27 @@ let intentry_with_suffix text key = · 183 unmodified lines | |||
| 184 | TEcont text | 184 | TEcont text |
| 185 | ;; | 185 | ;; |
| 186 | 186 | ||
| 187 | let wcmd fmt = | 187 | module C = struct |
| 188 | let dopen = '\000';; | ||
| 189 | let cs = '\001';; | ||
| 190 | let freepage = '\002';; | ||
| 191 | let freetile = '\003';; | ||
| 192 | let search = '\004';; | ||
| 193 | let geometry = '\005';; | ||
| 194 | let reqlayout = '\006';; | ||
| 195 | let page = '\007';; | ||
| 196 | let tile = '\008';; | ||
| 197 | let trimset = '\009';; | ||
| 198 | let settrim = '\010';; | ||
| 199 | let sliceh = '\011';; | ||
| 200 | let interrupt = '\012';; | ||
| 201 | end;; | ||
| 202 | |||
| 203 | let wcmd cmd fmt = | ||
| 188 | let b = Buffer.create 16 in | 204 | let b = Buffer.create 16 in |
| 189 | Printf.kbprintf | 205 | Printf.kbprintf |
| 190 | (fun b -> | 206 | (fun b -> |
| 207 | Buffer.add_char b cmd; | ||
| 191 | let b = Buffer.to_bytes b in | 208 | let b = Buffer.to_bytes b in |
| 192 | Ffi.wcmd state.ss b @@ Bytes.length b | 209 | Ffi.wcmd state.ss b @@ Bytes.length b |
| 193 | ) b fmt | 210 | ) b fmt |
| @@ -521,7 +538,7 @@ let tilepage n p layout = · 327 unmodified lines | |||
| 521 | then Ffi.getpbo w h conf.colorspace | 538 | then Ffi.getpbo w h conf.colorspace |
| 522 | else ~< "0" | 539 | else ~< "0" |
| 523 | in | 540 | in |
| 524 | wcmd "tile %s %d %d %d %d %s" (~> p) x y w h (~> pbo); | 541 | wcmd C.tile "%s %d %d %d %d %s" (~> p) x y w h (~> pbo); |
| 525 | state.currently <- | 542 | state.currently <- |
| 526 | Tiling ( | 543 | Tiling ( |
| 527 | l, p, conf.colorspace, conf.angle, | 544 | l, p, conf.colorspace, conf.angle, |
| @@ -554,7 +571,7 @@ let load pages = · 26 unmodified lines | |||
| 554 | | l :: rest -> | 571 | | l :: rest -> |
| 555 | begin match getopaque l.pageno with | 572 | begin match getopaque l.pageno with |
| 556 | | None -> | 573 | | None -> |
| 557 | wcmd "page %d %d" l.pageno l.pagedimno; | 574 | wcmd C.page "%d %d" l.pageno l.pagedimno; |
| 558 | state.currently <- Loading (l, state.gen); | 575 | state.currently <- Loading (l, state.gen); |
| 559 | | Some opaque -> | 576 | | Some opaque -> |
| 560 | tilepage l.pageno opaque pages; | 577 | tilepage l.pageno opaque pages; |
| @@ -730,7 +747,7 @@ let invalidate s f = · 169 unmodified lines | |||
| 730 | ;; | 747 | ;; |
| 731 | 748 | ||
| 732 | let flushpages () = | 749 | let flushpages () = |
| 733 | Hashtbl.iter (fun _ opaque -> wcmd "freepage %s" (~> opaque)) state.pagemap; | 750 | Hashtbl.iter (fun _ opaque -> wcmd C.freepage "%s" (~> opaque)) state.pagemap; |
| 734 | Hashtbl.clear state.pagemap; | 751 | Hashtbl.clear state.pagemap; |
| 735 | ;; | 752 | ;; |
| 736 | 753 | ||
| @@ -738,7 +755,7 @@ let flushtiles () = · 1 unmodified line | |||
| 738 | if not (Queue.is_empty state.tilelru) | 755 | if not (Queue.is_empty state.tilelru) |
| 739 | then ( | 756 | then ( |
| 740 | Queue.iter (fun (k, p, s) -> | 757 | Queue.iter (fun (k, p, s) -> |
| 741 | wcmd "freetile %s" (~> p); | 758 | wcmd C.freetile "%s" (~> p); |
| 742 | state.memused <- state.memused - s; | 759 | state.memused <- state.memused - s; |
| 743 | Hashtbl.remove state.tilemap k; | 760 | Hashtbl.remove state.tilemap k; |
| 744 | ) state.tilelru; | 761 | ) state.tilelru; |
| @@ -782,12 +799,12 @@ let opendoc path password = · 37 unmodified lines | |||
| 782 | else state.origin | 799 | else state.origin |
| 783 | in | 800 | in |
| 784 | Wsi.settitle ("llpp " ^ mbtoutf8 (Filename.basename titlepath)); | 801 | Wsi.settitle ("llpp " ^ mbtoutf8 (Filename.basename titlepath)); |
| 785 | wcmd "open %d %d %s\000%s\000%s\000" | 802 | wcmd C.dopen "%d %d %s\000%s\000%s\000" |
| 786 | (btod conf.usedoccss) !layouth | 803 | (btod conf.usedoccss) !layouth |
| 787 | path password conf.css; | 804 | path password conf.css; |
| 788 | invalidate "reqlayout" | 805 | invalidate "reqlayout" |
| 789 | (fun () -> | 806 | (fun () -> |
| 790 | wcmd "reqlayout %d %d %d %s\000" | 807 | wcmd C.reqlayout " %d %d %d %s\000" |
| 791 | conf.angle (FMTE.to_int conf.fitmodel) | 808 | conf.angle (FMTE.to_int conf.fitmodel) |
| 792 | (stateh state.winh) state.nameddest | 809 | (stateh state.winh) state.nameddest |
| 793 | ); | 810 | ); |
| @@ -987,7 +1004,7 @@ let reshape ?(firsttime=false) w h = · 193 unmodified lines | |||
| 987 | | Cmulti ((c, _, _), _) -> (w - (c-1)*conf.interpagespace) / c | 1004 | | Cmulti ((c, _, _), _) -> (w - (c-1)*conf.interpagespace) / c |
| 988 | | Csplit (c, _) -> w * c | 1005 | | Csplit (c, _) -> w * c |
| 989 | in | 1006 | in |
| 990 | wcmd "geometry %d %d %d" w (stateh h) (FMTE.to_int conf.fitmodel) | 1007 | wcmd C.geometry "%d %d %d" w (stateh h) (FMTE.to_int conf.fitmodel) |
| 991 | ); | 1008 | ); |
| 992 | ;; | 1009 | ;; |
| 993 | 1010 | ||
| @@ -1016,7 +1033,7 @@ let gctiles () = · 22 unmodified lines | |||
| 1016 | then Queue.push lruitem state.tilelru | 1033 | then Queue.push lruitem state.tilelru |
| 1017 | else ( | 1034 | else ( |
| 1018 | Ffi.freepbo p; | 1035 | Ffi.freepbo p; |
| 1019 | wcmd "freetile %s" (~> p); | 1036 | wcmd C.freetile "%s" (~> p); |
| 1020 | state.memused <- state.memused - s; | 1037 | state.memused <- state.memused - s; |
| 1021 | state.uioh#infochanged Memused; | 1038 | state.uioh#infochanged Memused; |
| 1022 | Hashtbl.remove state.tilemap k; | 1039 | Hashtbl.remove state.tilemap k; |
| @@ -1214,7 +1231,7 @@ let act cmds = · 191 unmodified lines | |||
| 1214 | Hashtbl.fold (fun ((pageno, _) as key) opaque accu -> | 1231 | Hashtbl.fold (fun ((pageno, _) as key) opaque accu -> |
| 1215 | if not (IntSet.mem pageno set) | 1232 | if not (IntSet.mem pageno set) |
| 1216 | then ( | 1233 | then ( |
| 1217 | wcmd "freepage %s" (~> opaque); | 1234 | wcmd C.freepage "%s" (~> opaque); |
| 1218 | key :: accu | 1235 | key :: accu |
| 1219 | ) | 1236 | ) |
| 1220 | else accu | 1237 | else accu |
| @@ -1279,7 +1296,7 @@ let act cmds = · 58 unmodified lines | |||
| 1279 | Ffi.unmappbo opaque; | 1296 | Ffi.unmappbo opaque; |
| 1280 | if tilew != conf.tilew || tileh != conf.tileh | 1297 | if tilew != conf.tilew || tileh != conf.tileh |
| 1281 | then ( | 1298 | then ( |
| 1282 | wcmd "freetile %s" (~> opaque); | 1299 | wcmd C.freetile "%s" (~> opaque); |
| 1283 | state.currently <- Idle; | 1300 | state.currently <- Idle; |
| 1284 | load state.layout; | 1301 | load state.layout; |
| 1285 | ) | 1302 | ) |
| @@ -1424,7 +1441,7 @@ let search pattern forward = · 138 unmodified lines | |||
| 1424 | | [] -> 0, 0 | 1441 | | [] -> 0, 0 |
| 1425 | | l :: _ -> l.pageno, (l.pagey + if forward then 0 else 0*l.pagevh) | 1442 | | l :: _ -> l.pageno, (l.pagey + if forward then 0 else 0*l.pagevh) |
| 1426 | in | 1443 | in |
| 1427 | wcmd "search %d %d %d %d,%s\000" | 1444 | wcmd C.search "%d %d %d %d,%s\000" |
| 1428 | (btod conf.icase) pn py (btod forward) pattern; | 1445 | (btod conf.icase) pn py (btod forward) pattern; |
| 1429 | ;; | 1446 | ;; |
| 1430 | 1447 | ||
| @@ -1488,7 +1505,7 @@ let reqlayout angle fitmodel = · 57 unmodified lines | |||
| 1488 | ); | 1505 | ); |
| 1489 | conf.fitmodel <- fitmodel; | 1506 | conf.fitmodel <- fitmodel; |
| 1490 | invalidate "reqlayout" | 1507 | invalidate "reqlayout" |
| 1491 | (fun () -> wcmd "reqlayout %d %d %d" | 1508 | (fun () -> wcmd C.reqlayout "%d %d %d" |
| 1492 | conf.angle (FMTE.to_int conf.fitmodel) (stateh state.winh)); | 1509 | conf.angle (FMTE.to_int conf.fitmodel) (stateh state.winh)); |
| 1493 | ;; | 1510 | ;; |
| 1494 | 1511 | ||
| @@ -1499,7 +1516,7 @@ let settrim trimmargins trimfuzz = · 4 unmodified lines | |||
| 1499 | conf.trimfuzz <- trimfuzz; | 1516 | conf.trimfuzz <- trimfuzz; |
| 1500 | let x0, y0, x1, y1 = trimfuzz in | 1517 | let x0, y0, x1, y1 = trimfuzz in |
| 1501 | invalidate "settrim" | 1518 | invalidate "settrim" |
| 1502 | (fun () -> wcmd "settrim %d %d %d %d %d" | 1519 | (fun () -> wcmd C.settrim "%d %d %d %d %d" |
| 1503 | (btod conf.trimmargins) x0 y0 x1 y1); | 1520 | (btod conf.trimmargins) x0 y0 x1 y1); |
| 1504 | flushpages (); | 1521 | flushpages (); |
| 1505 | ;; | 1522 | ;; |
| @@ -1985,7 +2002,7 @@ let gotohist (path, c, bookmarks, x, anchor, origin) = · 479 unmodified lines | |||
| 1985 | setconf conf c; | 2002 | setconf conf c; |
| 1986 | Ffi.setdcf conf.dcf; | 2003 | Ffi.setdcf conf.dcf; |
| 1987 | let x0, y0, x1, y1 = conf.trimfuzz in | 2004 | let x0, y0, x1, y1 = conf.trimfuzz in |
| 1988 | wcmd "trimset %d %d %d %d %d" (btod conf.trimmargins) x0 y0 x1 y1; | 2005 | wcmd C.trimset "%d %d %d %d %d" (btod conf.trimmargins) x0 y0 x1 y1; |
| 1989 | Wsi.reshape c.cwinw c.cwinh; | 2006 | Wsi.reshape c.cwinw c.cwinh; |
| 1990 | opendoc path origin; | 2007 | opendoc path origin; |
| 1991 | setzoom c.zoom; | 2008 | setzoom c.zoom; |
| @@ -2503,7 +2520,7 @@ let enterinfomode = · 511 unmodified lines | |||
| 2503 | (fun () -> conf.sliceheight) | 2520 | (fun () -> conf.sliceheight) |
| 2504 | (fun v -> | 2521 | (fun v -> |
| 2505 | conf.sliceheight <- v; | 2522 | conf.sliceheight <- v; |
| 2506 | wcmd "sliceh %d" conf.sliceheight; | 2523 | wcmd C.sliceh "%d" conf.sliceheight; |
| 2507 | ); | 2524 | ); |
| 2508 | src#int "anti-aliasing level" | 2525 | src#int "anti-aliasing level" |
| 2509 | (fun () -> conf.aalevel) | 2526 | (fun () -> conf.aalevel) |
| @@ -2566,7 +2583,7 @@ let enterinfomode = · 56 unmodified lines | |||
| 2566 | (fun () -> CSTE.to_string conf.colorspace) | 2583 | (fun () -> CSTE.to_string conf.colorspace) |
| 2567 | (fun v -> | 2584 | (fun v -> |
| 2568 | conf.colorspace <- CSTE.of_int v; | 2585 | conf.colorspace <- CSTE.of_int v; |
| 2569 | wcmd "cs %d" v; | 2586 | wcmd C.cs "%d" v; |
| 2570 | load state.layout; | 2587 | load state.layout; |
| 2571 | ); | 2588 | ); |
| 2572 | src#paxmark "pax mark method" | 2589 | src#paxmark "pax mark method" |
| @@ -2870,7 +2887,7 @@ let enterannotmode opaque slinkindex = · 297 unmodified lines | |||
| 2870 | else split accu b (i+1) | 2887 | else split accu b (i+1) |
| 2871 | in | 2888 | in |
| 2872 | let cleanup () = | 2889 | let cleanup () = |
| 2873 | wcmd "freepage %s" (~> opaque); | 2890 | wcmd C.freepage "%s" (~> opaque); |
| 2874 | let keys = | 2891 | let keys = |
| 2875 | Hashtbl.fold (fun key opaque' accu -> | 2892 | Hashtbl.fold (fun key opaque' accu -> |
| 2876 | if opaque' = opaque' | 2893 | if opaque' = opaque' |
| @@ -3948,7 +3965,7 @@ let linknavkeyboard key mask linknav = · 1071 unmodified lines | |||
| 3948 | 3965 | ||
| 3949 | let keyboard key mask = | 3966 | let keyboard key mask = |
| 3950 | if (key = Char.code 'g' && Wsi.withctrl mask) && not (istextentry state.mode) | 3967 | if (key = Char.code 'g' && Wsi.withctrl mask) && not (istextentry state.mode) |
| 3951 | then wcmd "interrupt" | 3968 | then wcmd C.interrupt "" |
| 3952 | else state.uioh <- state.uioh#key key mask | 3969 | else state.uioh <- state.uioh#key key mask |
| 3953 | ;; | 3970 | ;; |
| 3954 | 3971 | ||
| @@ -4273,7 +4290,7 @@ let annot inline x y = · 318 unmodified lines | |||
| 4273 | | Some (opaque, n, ux, uy) -> | 4290 | | Some (opaque, n, ux, uy) -> |
| 4274 | let add text = | 4291 | let add text = |
| 4275 | Ffi.addannot opaque ux uy text; | 4292 | Ffi.addannot opaque ux uy text; |
| 4276 | wcmd "freepage %s" (~> opaque); | 4293 | wcmd C.freepage "%s" (~> opaque); |
| 4277 | Hashtbl.remove state.pagemap (n, state.gen); | 4294 | Hashtbl.remove state.pagemap (n, state.gen); |
| 4278 | flushtiles (); | 4295 | flushtiles (); |
| 4279 | gotoxy state.x state.y | 4296 | gotoxy state.x state.y |