Lines Matching refs:clock
139 #define offset(field) XtOffsetOf(ClockRec, clock.field)
271 { /* clock fields */
505 if (w->clock.brief) {
506 if (w->clock.twentyfour) {
524 else if (w->clock.utime) {
533 else if (*w->clock.strftime) {
541 if (0 < strftime(ctime, STRFTIME_BUFF_SIZE - 1, w->clock.strftime, tm)) {
549 else if (w->clock.twentyfour)
569 if (w->clock.font != NULL)
570 myXGCV.font = w->clock.font->fid;
575 if (!w->clock.analog) {
582 w->clock.utf8 = False;
588 w->clock.utf8 = True;
597 if ((w->clock.strftime == NULL) || (w->clock.strftime[0] == 0)) {
598 w->clock.strftime = getenv("CFTIME");
599 if (w->clock.strftime == NULL) {
600 w->clock.strftime = "%c";
614 if (w->clock.render) {
621 if (w->clock.utf8)
622 XftTextExtentsUtf8(XtDisplay(w), w->clock.face,
626 XftTextExtentsUtf8(XtDisplay(w), w->clock.face,
634 XftTextExtents8(XtDisplay(w), w->clock.face,
636 min_width = extents.xOff + 2 * w->clock.padding;
637 min_height = w->clock.face->ascent + w->clock.face->descent +
638 2 * w->clock.padding;
648 if (w->clock.fontSet == NULL) {
652 w->clock.fontSet = XCreateFontSet(XtDisplay(w),
657 if (w->clock.fontSet != NULL) {
659 fse = XExtentsOfFontSet(w->clock.fontSet);
661 min_width = XmbTextEscapement(w->clock.fontSet, str, len) +
662 2 * w->clock.padding;
664 3 * w->clock.padding;
675 if (w->clock.font == NULL)
676 w->clock.font = XQueryFont(XtDisplay(w),
680 XTextWidth(w->clock.font, str, len) + 2 * w->clock.padding;
682 w->clock.font->ascent + w->clock.font->descent +
683 2 * w->clock.padding;
695 if (w->clock.font != NULL)
696 myXGCV.font = w->clock.font->fid;
700 w->clock.myGC = XtGetGC((Widget) w, valuemask, &myXGCV);
710 w->clock.EraseGC = XtGetGC((Widget) w, valuemask, &myXGCV);
713 myXGCV.foreground = w->clock.Hipixel;
714 w->clock.HighGC = XtGetGC((Widget) w, valuemask, &myXGCV);
717 myXGCV.foreground = w->clock.Hdpixel;
718 w->clock.HandGC = XtGetGC((Widget) w, valuemask, &myXGCV);
721 /*if (w->clock.update <= 0) w->clock.update = 60; */
722 w->clock.show_second_hand =
723 (abs((int) w->clock.update) <= SECOND_HAND_TIME);
724 w->clock.numseg = 0;
725 w->clock.interval_id = 0;
726 memset(&w->clock.otm, '\0', sizeof(w->clock.otm));
733 w->clock.can_polygon = True;
736 w->clock.can_polygon = False;
738 w->clock.pixmap = 0;
739 w->clock.draw = NULL;
740 w->clock.damage.x = 0;
741 w->clock.damage.y = 0;
742 w->clock.damage.height = 0;
743 w->clock.damage.width = 0;
751 if (!w->clock.draw) {
754 if (w->clock.buffer) {
755 if (!w->clock.pixmap) {
758 w->clock.pixmap = XCreatePixmap(XtDisplay(w), d,
765 d = w->clock.pixmap;
768 w->clock.draw = XftDrawCreate(XtDisplay(w), d,
773 w->clock.picture = XftDrawPicture(w->clock.draw);
776 w->clock.fill_picture = XftDrawSrcPicture(w->clock.draw, color);
786 if (w->clock.buffer)
787 d = w->clock.pixmap;
790 XFillRectangle(XtDisplay(w), d, w->clock.EraseGC,
791 w->clock.damage.x,
792 w->clock.damage.y,
793 w->clock.damage.width, w->clock.damage.height);
795 XUnionRectWithRegion(&w->clock.damage, r, r);
796 XftDrawSetClip(w->clock.draw, r);
811 if (w->clock.utf8) {
812 XftTextExtentsUtf8(XtDisplay(w), w->clock.face,
814 XftTextExtentsUtf8(XtDisplay(w), w->clock.face,
819 XftTextExtentsUtf8(XtDisplay(w), w->clock.face,
823 XftTextExtentsUtf8(XtDisplay(w), w->clock.face,
835 XftTextExtents8(XtDisplay(w), w->clock.face, (FcChar8 *) str,
837 XftTextExtents8(XtDisplay(w), w->clock.face, (FcChar8 *) str + off,
844 x = w->clock.padding + head.xOff;
845 y = w->clock.face->ascent + w->clock.padding + head.yOff;
916 #define XCoord(x,w) ((x) * (w)->clock.x_scale + (w)->clock.x_off)
917 #define YCoord(y,w) ((y) * (w)->clock.y_scale + (w)->clock.y_off)
973 if (w->clock.buffer && w->clock.pixmap) {
974 XCopyArea(XtDisplay(w), w->clock.pixmap,
975 XtWindow(w), w->clock.EraseGC,
976 w->clock.damage.x, w->clock.damage.y,
977 w->clock.damage.width, w->clock.damage.height,
978 w->clock.damage.x, w->clock.damage.y);
1014 RenderUpdateBounds(poly, 4, &w->clock.damage);
1016 if (RenderCheckBounds(poly, 4, &w->clock.damage)) {
1020 w->clock.fill_picture,
1021 w->clock.picture,
1022 w->clock.mask_format,
1027 RenderUpdateBounds(poly, 4, &w->clock.damage);
1060 if (RenderCheckBounds(poly, 3, &w->clock.damage)) {
1064 w->clock.fill_picture,
1065 w->clock.picture,
1066 w->clock.mask_format,
1070 RenderUpdateBounds(poly, 3, &w->clock.damage);
1079 &w->clock.hour_color, draw);
1081 &w->clock.min_color, draw);
1096 if (w->clock.update < 1.0)
1128 if (RenderCheckBounds(poly, 10, &w->clock.damage)) {
1129 RenderPrepare(w, &w->clock.sec_color);
1132 w->clock.fill_picture,
1133 w->clock.picture,
1134 w->clock.mask_format,
1139 RenderUpdateBounds(poly, 10, &w->clock.damage);
1154 switch (w->clock.backing_store) {
1159 attrs->backing_store = w->clock.backing_store;
1172 if (w->clock.interval_id)
1173 XtRemoveTimeOut(w->clock.interval_id);
1175 if (w->clock.picture)
1176 XRenderFreePicture(XtDisplay(w), w->clock.picture);
1177 if (w->clock.fill_picture)
1178 XRenderFreePicture(XtDisplay(w), w->clock.fill_picture);
1180 XtReleaseGC(gw, w->clock.myGC);
1181 XtReleaseGC(gw, w->clock.HighGC);
1182 XtReleaseGC(gw, w->clock.HandGC);
1183 XtReleaseGC(gw, w->clock.EraseGC);
1192 if (XtIsRealized(gw) && w->clock.analog) {
1196 (int) (2 * w->clock.padding)) / 2;
1197 w->clock.radius = (Dimension) max(radius, 1);
1199 w->clock.second_hand_length =
1200 (int) (SECOND_HAND_FRACT * w->clock.radius) / 100;
1201 w->clock.minute_hand_length =
1202 (int) (MINUTE_HAND_FRACT * w->clock.radius) / 100;
1203 w->clock.hour_hand_length =
1204 (int) (HOUR_HAND_FRACT * w->clock.radius) / 100;
1205 w->clock.hand_width = (int) (HAND_WIDTH_FRACT * w->clock.radius) / 100;
1206 w->clock.second_hand_width =
1207 (int) (SECOND_WIDTH_FRACT * w->clock.radius) / 100;
1209 w->clock.centerX = w->core.width / 2;
1210 w->clock.centerY = w->core.height / 2;
1213 w->clock.x_scale = 0.45 * w->core.width;
1214 w->clock.y_scale = 0.45 * w->core.height;
1215 w->clock.x_off = 0.5 * w->core.width;
1216 w->clock.y_off = 0.5 * w->core.height;
1217 if (w->clock.pixmap) {
1218 XFreePixmap(XtDisplay(w), w->clock.pixmap);
1219 w->clock.pixmap = 0;
1220 if (w->clock.draw) {
1221 XftDrawDestroy(w->clock.draw);
1222 w->clock.draw = NULL;
1224 w->clock.picture = 0;
1235 if (w->clock.analog) {
1237 if (w->clock.render && w->clock.can_polygon)
1238 XClipBox(region, &w->clock.damage);
1242 if (w->clock.numseg != 0)
1249 if (w->clock.render)
1250 XClipBox(region, &w->clock.damage);
1252 w->clock.prev_time_string[0] = '\0';
1320 /* Choose the update times for well-defined clock states.
1342 * The time t(i) determines the clock state. It follows from
1431 if (w->clock.update && (id || !w->clock.interval_id))
1432 w->clock.interval_id =
1434 waittime(w->clock.update, &tv, &tm),
1437 round_time(w->clock.update, &tm, &tv);
1441 if (w->clock.chime == TRUE) {
1442 if (w->clock.beeped && (tm.tm_min != 30) && (tm.tm_min != 0))
1443 w->clock.beeped = FALSE;
1445 && (!w->clock.beeped)) {
1446 w->clock.beeped = TRUE;
1462 if (w->clock.analog == FALSE) {
1470 prev_len = strlen(w->clock.prev_time_string);
1472 (w->clock.prev_time_string[i] == time_ptr[i])); i++);
1475 if (w->clock.render) {
1483 RenderTextBounds(w, w->clock.prev_time_string, i, prev_len,
1485 RenderUpdateRectBounds(&old_tail, &w->clock.damage);
1487 RenderUpdateRectBounds(&new_tail, &w->clock.damage);
1491 if (!RenderRectIn(&head, &w->clock.damage))
1499 if (w->clock.utf8) {
1500 XftDrawStringUtf8(w->clock.draw,
1501 &w->clock.fg_color,
1502 w->clock.face,
1508 XftDrawStringUtf8(w->clock.draw,
1509 &w->clock.fg_color,
1510 w->clock.face,
1518 XftDrawString8(w->clock.draw,
1519 &w->clock.fg_color,
1520 w->clock.face,
1524 RenderResetBounds(&w->clock.damage);
1531 XFontSetExtents *fse = XExtentsOfFontSet(w->clock.fontSet);
1533 XmbDrawImageString(dpy, win, w->clock.fontSet, w->clock.myGC,
1534 (2 + w->clock.padding +
1535 (i ? XmbTextEscapement(w->clock.fontSet,
1537 2 + w->clock.padding +
1543 clear_from = XmbTextEscapement(w->clock.fontSet, time_ptr,
1544 len) + 2 + w->clock.padding;
1550 XDrawImageString(dpy, win, w->clock.myGC,
1551 (1 + w->clock.padding +
1552 XTextWidth(w->clock.font, time_ptr, i)),
1553 w->clock.font->ascent + w->clock.padding,
1558 clear_from = XTextWidth(w->clock.font, time_ptr, len)
1559 + 2 + w->clock.padding;
1566 strlcpy(w->clock.prev_time_string + i, time_ptr + i,
1567 sizeof(w->clock.prev_time_string) - i);
1569 strncpy(w->clock.prev_time_string + i, time_ptr + i,
1570 sizeof(w->clock.prev_time_string) - i);
1571 w->clock.prev_time_string[sizeof(w->clock.prev_time_string) - 1] = 0;
1577 * sixtieths around the clock face. The hour hand is
1579 * clock-face. The derivation is left as an exercise
1584 * 12 hour clock.
1590 if (w->clock.render && w->clock.can_polygon) {
1591 w->clock.mask_format = XRenderFindStandardFormat(XtDisplay(w),
1592 w->clock.sharp ?
1598 if (tm.tm_min != w->clock.otm.tm_min ||
1599 tm.tm_hour != w->clock.otm.tm_hour ||
1600 tm.tm_sec != w->clock.otm.tm_sec ||
1601 tv.tv_usec != w->clock.otv.tv_usec) {
1602 RenderHands(w, &w->clock.otm, &w->clock.otv, False);
1605 if (w->clock.show_second_hand &&
1606 (tm.tm_sec != w->clock.otm.tm_sec ||
1607 tv.tv_usec != w->clock.otv.tv_usec)) {
1608 RenderSec(w, &w->clock.otm, &w->clock.otv, False);
1611 if (w->clock.damage.width && w->clock.damage.height) {
1615 if (w->clock.show_second_hand == TRUE)
1618 w->clock.otm = tm;
1619 w->clock.otv = tv;
1621 RenderResetBounds(&w->clock.damage);
1628 if (w->clock.numseg == 0 ||
1629 tm.tm_min != w->clock.otm.tm_min ||
1630 tm.tm_hour != w->clock.otm.tm_hour ||
1631 tm.tm_sec != w->clock.otm.tm_sec) {
1632 w->clock.segbuffptr = w->clock.segbuff;
1633 w->clock.numseg = 0;
1641 w->clock.minute_hand_length, w->clock.hand_width,
1643 if (w->clock.Hdpixel != w->core.background_pixel)
1645 win, w->clock.HandGC,
1646 w->clock.segbuff, VERTICES_IN_HANDS,
1649 win, w->clock.HighGC,
1650 w->clock.segbuff, VERTICES_IN_HANDS, CoordModeOrigin);
1651 w->clock.hour = w->clock.segbuffptr;
1653 w->clock.hour_hand_length, w->clock.hand_width,
1655 if (w->clock.Hdpixel != w->core.background_pixel) {
1657 win, w->clock.HandGC,
1658 w->clock.hour,
1662 win, w->clock.HighGC,
1663 w->clock.hour, VERTICES_IN_HANDS, CoordModeOrigin);
1665 w->clock.sec = w->clock.segbuffptr;
1667 if (w->clock.show_second_hand == TRUE) {
1668 w->clock.segbuffptr = w->clock.sec;
1670 w->clock.second_hand_length - 2,
1671 w->clock.second_hand_width,
1672 w->clock.minute_hand_length + 2,
1674 if (w->clock.Hdpixel != w->core.background_pixel)
1676 win, w->clock.HandGC,
1677 w->clock.sec,
1680 win, w->clock.HighGC,
1681 w->clock.sec, VERTICES_IN_HANDS - 1, CoordModeOrigin);
1684 w->clock.otm = tm;
1685 w->clock.otv = tv;
1695 if (w->clock.numseg > 0) {
1701 if (w->clock.show_second_hand == TRUE) {
1703 w->clock.EraseGC,
1704 w->clock.sec, VERTICES_IN_HANDS - 1, CoordModeOrigin);
1705 if (w->clock.Hdpixel != w->core.background_pixel) {
1707 win, w->clock.EraseGC,
1708 w->clock.sec,
1712 if (!tm || tm->tm_min != w->clock.otm.tm_min ||
1713 tm->tm_hour != w->clock.otm.tm_hour ||
1714 tm->tm_sec != w->clock.otm.tm_sec) {
1716 w->clock.EraseGC,
1717 w->clock.segbuff, VERTICES_IN_HANDS, CoordModeOrigin);
1719 w->clock.EraseGC,
1720 w->clock.hour, VERTICES_IN_HANDS, CoordModeOrigin);
1721 if (w->clock.Hdpixel != w->core.background_pixel) {
1723 w->clock.EraseGC,
1724 w->clock.segbuff, VERTICES_IN_HANDS,
1727 w->clock.EraseGC,
1728 w->clock.hour,
1767 int cx = w->clock.centerX, cy = w->clock.centerY, x1, y1, x2, y2;
1770 * Angles are measured from 12 o'clock, clockwise increasing.
1805 * Angles are measured from 12 o'clock, clockwise increasing.
1825 x = w->clock.centerX + clock_round(length * sinangle),
1826 y = w->clock.centerY - clock_round(length * cosangle),
1827 x1 = w->clock.centerX - clock_round(ws + wc),
1828 y1 = w->clock.centerY + clock_round(wc - ws)); /* 1 ---- 2 */
1831 x2 = w->clock.centerX - clock_round(ws - wc),
1832 y2 = w->clock.centerY + clock_round(wc + ws)); /* 2 ----- 3 */
1858 * Angles are measured from 12 o'clock, clockwise increasing.
1893 x = w->clock.centerX + clock_round(length * sinangle),
1894 y = w->clock.centerY - clock_round(length * cosangle),
1895 w->clock.centerX + clock_round(ms - wc),
1896 w->clock.centerY - clock_round(mc + ws));
1897 SetSeg(w, w->clock.centerX + clock_round(offset * sinangle), w->clock.centerY - clock_round(offset * cosangle), /* 2-----3 */
1898 w->clock.centerX + clock_round(ms + wc),
1899 w->clock.centerY - clock_round(mc - ws));
1900 w->clock.segbuffptr->x = x;
1901 w->clock.segbuffptr++->y = y;
1902 w->clock.numseg++;
1908 w->clock.segbuffptr->x = x1;
1909 w->clock.segbuffptr++->y = y1;
1910 w->clock.segbuffptr->x = x2;
1911 w->clock.segbuffptr++->y = y2;
1912 w->clock.numseg += 2;
1916 * Draw the clock face (every fifth tick-mark is longer
1924 (int) (w->clock.radius - w->clock.second_hand_length) / 3;
1926 w->clock.segbuffptr = w->clock.segbuff;
1927 w->clock.numseg = 0;
1930 if (w->clock.render && w->clock.can_polygon) {
1941 color = &w->clock.minor_color;
1946 color = &w->clock.major_color;
1954 w->clock.second_hand_length :
1955 (w->clock.radius - delta)), w->clock.radius, i * 60);
1959 if (w->clock.render && w->clock.can_polygon)
1966 w->clock.myGC, (XSegment *) & (w->clock.segbuff[0]),
1967 w->clock.numseg / 2);
1969 w->clock.segbuffptr = w->clock.segbuff;
1970 w->clock.numseg = 0;
2006 /* first check for changes to clock-specific resources. We'll accept all
2009 if (new->clock.update != current->clock.update) {
2010 if (current->clock.interval_id)
2011 XtRemoveTimeOut(current->clock.interval_id);
2012 if (new->clock.update && XtIsRealized((Widget) new))
2013 new->clock.interval_id =
2015 fabsf(new->clock.update) * 1000, clock_tic,
2018 new->clock.show_second_hand =
2019 (fabsf(new->clock.update) <= SECOND_HAND_TIME);
2020 if (new->clock.show_second_hand != current->clock.show_second_hand)
2024 if (new->clock.padding != current->clock.padding)
2027 if (new->clock.analog != current->clock.analog)
2030 if (new->clock.font != current->clock.font)
2034 if (new->clock.fontSet != current->clock.fontSet)
2043 myXGCV.font = new->clock.font->fid;
2045 XtReleaseGC(gcurrent, current->clock.myGC);
2046 new->clock.myGC = XtGetGC(gcurrent, valuemask, &myXGCV);
2050 if (new->clock.Hipixel != current->clock.Hipixel) {
2052 myXGCV.foreground = new->clock.Hipixel;
2053 myXGCV.font = new->clock.font->fid;
2055 XtReleaseGC(gcurrent, current->clock.HighGC);
2056 new->clock.HighGC = XtGetGC((Widget) gcurrent, valuemask, &myXGCV);
2060 if (new->clock.Hdpixel != current->clock.Hdpixel) {
2062 myXGCV.foreground = new->clock.Hdpixel;
2063 XtReleaseGC(gcurrent, current->clock.HandGC);
2064 new->clock.HandGC = XtGetGC((Widget) gcurrent, valuemask, &myXGCV);
2073 XtReleaseGC(gcurrent, current->clock.EraseGC);
2074 new->clock.EraseGC = XtGetGC((Widget) gcurrent, valuemask, &myXGCV);
2078 if (new->clock.face != current->clock.face)
2080 if (!sameColor(&new->clock.hour_color, ¤t->clock.fg_color) ||
2081 !sameColor(&new->clock.hour_color, ¤t->clock.hour_color) ||
2082 !sameColor(&new->clock.min_color, ¤t->clock.min_color) ||
2083 !sameColor(&new->clock.sec_color, ¤t->clock.sec_color) ||
2084 !sameColor(&new->clock.major_color, ¤t->clock.major_color) ||
2085 !sameColor(&new->clock.minor_color, ¤t->clock.minor_color))
2087 if (new->clock.sharp != current->clock.sharp)
2089 if (new->clock.render != current->clock.render)
2091 if (new->clock.buffer != current->clock.buffer) {
2092 if (new->clock.pixmap) {
2093 XFreePixmap(XtDisplay(new), new->clock.pixmap);
2094 new->clock.pixmap = 0;
2096 if (new->clock.draw) {
2097 XftDrawDestroy(new->clock.draw);
2098 new->clock.draw = NULL;
2100 new->clock.picture = 0;