public static bool IsMark(int charPoint) { int p = JavaUtil.ArraysBinarySearch(markTable, charPoint); if (p >= 0) { return(true); } p = ~p; if (p >= markTable.Length) { return(false); } return((p & 1) != 0); }
internal String ConsumeToAnySorted(params char[] chars) { int start = pos; int remaining = length; char[] val = input; while (pos < remaining) { if (JavaUtil.ArraysBinarySearch(chars, val[pos]) >= 0) { break; } pos++; } return(pos > start?CacheString(start, pos - start) : ""); }
internal bool MatchesAnySorted(char[] seq) { return(!IsEmpty() && JavaUtil.ArraysBinarySearch(seq, input[pos]) >= 0); }
/// <summary>Places the barcode in a <CODE>PdfCanvas</CODE>.</summary> /// <remarks> /// Places the barcode in a <CODE>PdfCanvas</CODE>. The /// barcode is always placed at coordinates (0, 0). Use the /// translation matrix to move it elsewhere.<p> /// The bars and text are written in the following colors: /// <br /> /// <TABLE BORDER=1 SUMMARY="barcode properties"> /// <TR> /// <TH><P><CODE>barColor</CODE></TH> /// <TH><P><CODE>textColor</CODE></TH> /// <TH><P>Result</TH> /// </TR> /// <TR> /// <TD><P><CODE>null</CODE></TD> /// <TD><P><CODE>null</CODE></TD> /// <TD><P>bars and text painted with current fill color</TD> /// </TR> /// <TR> /// <TD><P><CODE>barColor</CODE></TD> /// <TD><P><CODE>null</CODE></TD> /// <TD><P>bars and text painted with <CODE>barColor</CODE></TD> /// </TR> /// <TR> /// <TD><P><CODE>null</CODE></TD> /// <TD><P><CODE>textColor</CODE></TD> /// <TD><P>bars painted with current color<br />text painted with <CODE>textColor</CODE></TD> /// </TR> /// <TR> /// <TD><P><CODE>barColor</CODE></TD> /// <TD><P><CODE>textColor</CODE></TD> /// <TD><P>bars painted with <CODE>barColor</CODE><br />text painted with <CODE>textColor</CODE></TD> /// </TR> /// </TABLE> /// </remarks> /// <param name="canvas">the <CODE>PdfCanvas</CODE> where the barcode will be placed</param> /// <param name="barColor">the color of the bars. It can be <CODE>null</CODE></param> /// <param name="textColor">the color of the text. It can be <CODE>null</CODE></param> /// <returns>the dimensions the barcode occupies</returns> public override Rectangle PlaceBarcode(PdfCanvas canvas, Color barColor, Color textColor) { Rectangle rect = GetBarcodeSize(); float barStartX = 0; float barStartY = 0; float textStartY = 0; if (font != null) { if (baseline <= 0) { textStartY = barHeight - baseline; } else { textStartY = -GetDescender(); barStartY = textStartY + baseline; } } switch (codeType) { case EAN13: case UPCA: case UPCE: { if (font != null) { barStartX += font.GetWidth(code[0], size); } break; } } byte[] bars; int[] guard = GUARD_EMPTY; switch (codeType) { case EAN13: { bars = GetBarsEAN13(code); guard = GUARD_EAN13; break; } case EAN8: { bars = GetBarsEAN8(code); guard = GUARD_EAN8; break; } case UPCA: { bars = GetBarsEAN13("0" + code); guard = GUARD_UPCA; break; } case UPCE: { bars = GetBarsUPCE(code); guard = GUARD_UPCE; break; } case SUPP2: { bars = GetBarsSupplemental2(code); break; } case SUPP5: { bars = GetBarsSupplemental5(code); break; } default: { throw new PdfException("Invalid code type"); } } float keepBarX = barStartX; bool print = true; float gd = 0; if (font != null && baseline > 0 && guardBars) { gd = baseline / 2; } if (barColor != null) { canvas.SetFillColor(barColor); } for (int k = 0; k < bars.Length; ++k) { float w = bars[k] * x; if (print) { if (JavaUtil.ArraysBinarySearch(guard, k) >= 0) { canvas.Rectangle(barStartX, barStartY - gd, w - inkSpreading, barHeight + gd); } else { canvas.Rectangle(barStartX, barStartY, w - inkSpreading, barHeight); } } print = !print; barStartX += w; } canvas.Fill(); if (font != null) { if (textColor != null) { canvas.SetFillColor(textColor); } canvas.BeginText(); canvas.SetFontAndSize(font, size); switch (codeType) { case EAN13: { canvas.SetTextMatrix(0, textStartY); canvas.ShowText(code.JSubstring(0, 1)); for (int k = 1; k < 13; ++k) { String c = code.JSubstring(k, k + 1); float len = font.GetWidth(c, size); float pX = keepBarX + TEXTPOS_EAN13[k - 1] * x - len / 2; canvas.SetTextMatrix(pX, textStartY); canvas.ShowText(c); } break; } case EAN8: { for (int k = 0; k < 8; ++k) { String c = code.JSubstring(k, k + 1); float len = font.GetWidth(c, size); float pX = TEXTPOS_EAN8[k] * x - len / 2; canvas.SetTextMatrix(pX, textStartY); canvas.ShowText(c); } break; } case UPCA: { canvas.SetTextMatrix(0, textStartY); canvas.ShowText(code.JSubstring(0, 1)); for (int k = 1; k < 11; ++k) { String c = code.JSubstring(k, k + 1); float len = font.GetWidth(c, size); float pX = keepBarX + TEXTPOS_EAN13[k] * x - len / 2; canvas.SetTextMatrix(pX, textStartY); canvas.ShowText(c); } canvas.SetTextMatrix(keepBarX + x * (11 + 12 * 7), textStartY); canvas.ShowText(code.JSubstring(11, 12)); break; } case UPCE: { canvas.SetTextMatrix(0, textStartY); canvas.ShowText(code.JSubstring(0, 1)); for (int k = 1; k < 7; ++k) { String c = code.JSubstring(k, k + 1); float len = font.GetWidth(c, size); float pX = keepBarX + TEXTPOS_EAN13[k - 1] * x - len / 2; canvas.SetTextMatrix(pX, textStartY); canvas.ShowText(c); } canvas.SetTextMatrix(keepBarX + x * (9 + 6 * 7), textStartY); canvas.ShowText(code.JSubstring(7, 8)); break; } case SUPP2: case SUPP5: { for (int k = 0; k < code.Length; ++k) { String c = code.JSubstring(k, k + 1); float len = font.GetWidth(c, size); float pX = (7.5f + (9 * k)) * x - len / 2; canvas.SetTextMatrix(pX, textStartY); canvas.ShowText(c); } break; } } canvas.EndText(); } return(rect); }