public void renderStaticSection(Context c) {
   int row = 0;
   float x = 0, y = 0;
   if (startLine < 0) {
     y = -startLine * charHeight;
     row = -startLine;
   } else {
     y = 0;
     row = 0;
   }
   for (int i = appendOnly.getLineStart(startLine); i < appendOnly.length() && row < rows; i++) {
     char character = appendOnly.getCharAt(i);
     if (character != '\n') {
       Sprite s = font.getSprite(character);
       if (s != null) {
         c.pushTransform();
         c.appendTransform(Matrix.translation(x, y, 0));
         s.render(c);
         c.popTransform();
       }
       x += charWidth;
     } else {
       y += charHeight;
       row++;
       x = 0;
     }
   }
 }
 private void renderChar(Context c, char character, float x, float y) {
   Sprite s = font.getSprite(character);
   if (s != null) {
     c.pushTransform();
     c.appendTransform(Matrix.translation(x, y, 0));
     s.render(c);
     c.popTransform();
   }
 }
  private void renderCursor(float x, float y, Context c) {
    if (blinkTime < blinkPeriod / 2) {
      GL11.glPushAttrib(GL11.GL_COLOR_BUFFER_BIT);
      GL14.glBlendFuncSeparate(
          GL11.GL_ONE_MINUS_DST_COLOR, GL11.GL_ZERO, GL11.GL_ZERO, GL11.GL_ZERO);
      GL20.glBlendEquationSeparate(GL14.GL_FUNC_ADD, GL14.GL_FUNC_ADD);

      c.resetColor();
      c.pushTransform();
      c.appendTransform(Matrix.translation(x, y, 0));
      font.getSprite(getCursorChar()).render(c);
      c.popTransform();

      GL11.glPopAttrib();
    }
  }