private static float GetDataHig(Axis axis, double value, float totalWidth) { if (axis.IsLog()) { int minIndex = axis.GetLogMinIndex(); float nowIndex = axis.GetLogValue(value); return((nowIndex - minIndex) / axis.splitNumber * totalWidth); } else if (axis.IsCategory()) { if (axis.boundaryGap) { float tick = (float)(totalWidth / (axis.context.minMaxRange + 1)); return(tick / 2 + (float)(value - axis.context.minValue) * tick); } else { return((float)((value - axis.context.minValue) / axis.context.minMaxRange * totalWidth)); } } else { return((float)((value - axis.context.minValue) / axis.context.minMaxRange * totalWidth)); } }
private static float GetAxisPositionInternal(GridCoord grid, Axis axis, float scaleWidth, double value, bool includeGridXY, bool realLength) { var isY = axis is YAxis; var gridHeight = isY ? grid.context.height : grid.context.width; var gridXY = isY ? grid.context.y : grid.context.x; if (axis.IsLog()) { int minIndex = axis.GetLogMinIndex(); float nowIndex = axis.GetLogValue(value); return(includeGridXY ? gridXY + (nowIndex - minIndex) / axis.splitNumber * gridHeight : (nowIndex - minIndex) / axis.splitNumber * gridHeight); } else if (axis.IsCategory()) { var categoryIndex = (int)value; return(includeGridXY ? gridXY + (axis.boundaryGap ? scaleWidth / 2 : 0) + scaleWidth * categoryIndex : (axis.boundaryGap ? scaleWidth / 2 : 0) + scaleWidth * categoryIndex); } else { var yDataHig = 0f; if (axis.context.minMaxRange != 0) { if (realLength) { yDataHig = (float)(value * gridHeight / axis.context.minMaxRange); } else { yDataHig = (float)((value - axis.context.minValue) / axis.context.minMaxRange * gridHeight); } } return(includeGridXY ? gridXY + yDataHig : yDataHig); } }