MCPcopy Create free account
hub / github.com/SimHacker/micropolis / PixelToValue

Function PixelToValue

micropolis-activity/src/sim/w_inter.c:1221–1267  ·  view source on GitHub ↗
(intervalPtr, x, y)

Source from the content-addressed store, hash-verified

1219 * Given a pixel within a interval window, return the interval
1220 * reading corresponding to that pixel.
1221 *
1222 * Results:
1223 * An integer interval reading.
1224 *
1225 * Side effects:
1226 * None.
1227 *
1228 *----------------------------------------------------------------------
1229 */
1230
1231static int
1232PixelToValue(intervalPtr, x, y)
1233 register Interval *intervalPtr; /* Information about widget. */
1234 int x, y; /* Coordinates of point within
1235 * window. */
1236{
1237 int value, pixelRange;
1238
1239 if (intervalPtr->vertical) {
1240 pixelRange = Tk_Height(intervalPtr->tkwin)
1241 - 2*intervalPtr->offset - 4*intervalPtr->borderWidth;
1242 value = y;
1243 } else {
1244 pixelRange = Tk_Width(intervalPtr->tkwin)
1245 - 2*intervalPtr->offset - 4*intervalPtr->borderWidth;
1246 value = x;
1247 }
1248
1249 if (pixelRange <= 0) {
1250 /*
1251 * Not enough room for the slider to actually slide: just return
1252 * a constant.
1253 */
1254
1255 return (0);
1256 }
1257 value -= intervalPtr->offset + intervalPtr->borderWidth;
1258#if 0
1259 if (value < 0) {
1260 value = 0;
1261 }
1262 if (value > pixelRange) {
1263 value = pixelRange;
1264 }
1265#endif
1266 if (intervalPtr->toValue > intervalPtr->fromValue) {
1267 value = intervalPtr->fromValue +
1268 ((value * (intervalPtr->toValue - intervalPtr->fromValue))
1269 + pixelRange/2)/pixelRange;
1270 } else {

Callers 1

IntervalMouseProcFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected