/// <summary> /// Sets the color use. /// </summary> /// <param name="output">The output.</param> public void setColorUse(cursorVariatorState output) { if (output.isHeadZone || output.isFootZone) { output.useInvertedForeground = true; output.useLayoutPalette = true; output.useColorIndex = (Int32)colors.acePaletteVariationRole.header; return; } if (output.isHeadZoneExtended || output.isFootZoneExtended) { output.useInvertedForeground = true; output.useLayoutPalette = true; if (output.isOdd) { output.useColorIndex = (Int32)colors.acePaletteVariationRole.odd; } else { output.useColorIndex = (Int32)colors.acePaletteVariationRole.even; } return; } if (output.isLeftZone || output.isRightZone) { output.useLayoutPalette = true; output.useInvertedForeground = true; output.useColorIndex = (Int32)colors.acePaletteVariationRole.heading; return; } output.useLayoutPalette = false; output.useInvertedForeground = false; output.useColorIndex = (Int32)colors.acePaletteVariationRole.normal; if (output.isOdd) { output.useColorIndex = (Int32)colors.acePaletteVariationRole.odd; } else if (output.isEven) { output.useColorIndex = (Int32)colors.acePaletteVariationRole.even; } if (output.isMinor) { output.useColorIndex++; } if (output.isMajor) { output.useColorIndex++; output.useColorIndex++; } }
/// <summary> /// Returns state of speficied position according to <c>area</c>, <c>headZone</c>, <c>footZone</c> and other parameters. /// </summary> /// <param name="x">The x.</param> /// <param name="y">The y.</param> /// <returns></returns> public cursorVariatorState state(Int32 x, Int32 y) { cursorVariatorState output = new zone.cursorVariatorState(); output.x = x; output.y = y; if (area == null) { throw new NotSupportedException("area can't be null! cursorVariator"); } output.isInside = area.isInside(x, y); output.isOutside = !area.isInsideOrEdge(x, y); Int32 dX = x - area.x; Int32 dY = y - area.y; output.isFirst = (dY == area.TopLeft.y); output.isLast = (dY == area.BottomRight.y); if (output.isInside) { output.isHeadZone = area.isNearToCorner(x, y, textCursorZoneCorner.Top, headZone); if (!output.isHeadZone) { output.isHeadZoneExtended = area.isNearToCorner(x, y, textCursorZoneCorner.Top, headZone + headZoneExtension); } output.isFootZone = area.isNearToCorner(x, y, textCursorZoneCorner.Bottom, footZone); if (!output.isFootZone) { output.isFootZoneExtended = area.isNearToCorner(x, y, textCursorZoneCorner.Bottom, footZone + footZoneExtension); } output.isLeftZone = area.isNearToCorner(x, y, textCursorZoneCorner.Left, leftZone); output.isRightZone = area.isNearToCorner(x, y, textCursorZoneCorner.Right, rightZone); if (doOdd) { output.isOdd = (dY % 2 != 0); } if (doOdd) { output.isEven = !output.isOdd; } if (minor > 0) { output.isMinor = (dY % minor == 0); } if (major > 0) { output.isMajor = (dY % major == 0); } } else { } lastState = output; setColorUse(output); return(output); }