/**
   * gets the redirect URL as workaround for opening a new window or refreshing a window (Noscript
   * version)
   */
  private String getWindowOpener() {
    String result = "";
    IServiceStateInfo stateInfo = ContextProvider.getStateInfo();
    WebForm activeForm = FormManager.getActive();

    WebForm[] allForms = FormManager.getAll();
    boolean finished = false;
    for (int i = 0; !finished && i < allForms.length; i++) {
      WebForm form = allForms[i];
      IFormAdapter formAdapter = WebFormUtil.getFormAdapter(form);
      if (stateInfo.isExpired()) {
        if (!formAdapter.getWindowOpenerBuffer().equals("")) {
          result = formAdapter.getWindowOpenerBuffer();
          finished = true;
        }
      } else {
        if (WebComponentControl.openInNewWindow(form) || WebComponentControl.refreshWindow(form)) {
          result =
              "<meta http-equiv=\"refresh\" content=\"0; url="
                  + RenderUtil.createEncodedFormGetURL(form)
                  + "\">";
          formAdapter.addWindowOpenerBuffer(result);
          NoscriptFormStack.getInstance().push(activeForm);
          finished = true;
        } else {
          formAdapter.addWindowOpenerBuffer("");
        }
      }
    }
    return result;
  }
 private String getWindowCloser() {
   String result = "";
   boolean isActiveForm = false;
   WebForm[] allForms = FormManager.getAll();
   // remove all closed windows except the active window
   for (int i = 0; i < allForms.length; i++) {
     WebForm form = allForms[i];
     if (form != FormManager.getActive()) {
       IWindow window = W4TContext.getWindowManager().findWindow(form);
       if (window != null && WindowManager.isClosing(window)) {
         NoscriptFormStack.getInstance().remove(form);
       }
     }
   }
   // 'close' active window
   IWindow activeWindow = WindowManager.getActive();
   if (WindowManager.isClosing(activeWindow) && !WindowManager.isClosed(activeWindow)) {
     isActiveForm = true;
     NoscriptFormStack.getInstance().remove(FormManager.getActive());
     WindowManager.setClosed(activeWindow, true);
   }
   // create meta tag to redirect to previous form
   if (isActiveForm && !NoscriptFormStack.getInstance().isEmpty()) {
     WebForm newForm = NoscriptFormStack.getInstance().pop();
     result =
         "<meta http-equiv=\"refresh\" content=\"0; url="
             + RenderUtil.createEncodedFormGetURL(newForm)
             + "\">";
   }
   return result;
 }
Example #3
0
  public void render() {

    RenderUtil.setClearColor(Transform.getCamera().getPos().div(2048f).abs());
    _shader.bind();
    _shader.updateUniforms(
        _transform.getTransformation(), _transform.getProjectedTransformation(), _material);
    _mesh.draw();
  }
 /**
  * 创建灰度图像(J2ME中只支持PNG格式图片),内存空间足够时调用此方法
  *
  * @param pic 源图片
  * @param srcX 处理块在源图片中的X偏移
  * @param srcY 处理块在源图片中的Y偏移
  * @param w 处理块宽度
  * @param h 处理块高度
  * @return
  */
 public static Image createGray(Image pic, int srcX, int srcY, int w, int h) {
   int[] rgbData = new int[w * h];
   pic.getRGB(rgbData, 0, w, srcX, srcY, w, h);
   for (int i = rgbData.length - 1; i >= 0; --i) {
     rgbData[i] = RenderUtil.turnGray(rgbData[i]);
   }
   return Image.createRGBImage(rgbData, w, h, true);
 }
  private static FrameworkResources loadPlatformResources(File resFolder, ILogger log)
      throws IOException, RenderingException {
    final FrameworkResources resources = new FrameworkResources();
    final IAbstractFolder resFolderWrapper = new BufferingFolderWrapper(resFolder);

    RenderUtil.loadResources(resources, null, null, resFolderWrapper);

    resources.loadPublicResources(resFolderWrapper, log);
    return resources;
  }
 /**
  * 绘制灰度变换图像(J2ME中只支持PNG格式图片),内存空间足够时调用此方法
  *
  * @param g
  * @param pic 源图片
  * @param srcX 绘制块在源图片的X偏移
  * @param srcY 绘制块在源图片的Y偏移
  * @param w 绘制宽度
  * @param h 绘制高度
  * @param destX 显示的X坐标
  * @param destY 显示的Y坐标
  */
 public static void drawGray(
     SGraphics g, Image pic, int srcX, int srcY, int w, int h, int destX, int destY) {
   int[] rgbData = new int[w * h];
   Image grayImg;
   pic.getRGB(rgbData, 0, w, srcX, srcY, w, h);
   for (int i = rgbData.length - 1; i >= 0; --i) {
     rgbData[i] = RenderUtil.turnGray(rgbData[i]);
   }
   grayImg = Image.createRGBImage(rgbData, w, h, true);
   g.drawImage(grayImg, destX, destY, 0);
 }
 /**
  * 逐行绘制灰度变换图像(J2ME中只支持PNG格式图片),内存不够时调用次方法,绘制效率偏低
  *
  * @param g
  * @param pic 源图片
  * @param srcX 绘制块在源图片的X偏移
  * @param srcY 绘制块在源图片的Y偏移
  * @param w 绘制宽度
  * @param h 绘制高度
  * @param destX 显示的X坐标
  * @param destY 显示的Y坐标
  */
 public static void drawGrayByLine(
     SGraphics g, Image pic, int srcX, int srcY, int w, int h, int destX, int destY) {
   int[] rgbData = new int[w];
   for (int hd = h - 1; hd >= 0; --hd) {
     pic.getRGB(rgbData, 0, w, srcX, srcY + hd, w, 1);
     for (int i = rgbData.length - 1; i >= 0; --i) {
       rgbData[i] = RenderUtil.turnGray(rgbData[i]);
     }
     g.drawRGB(rgbData, 0, w, destX, destY + hd, w, 1, true);
   }
 }
  /**
   * 创建透明变换图像(J2ME中只支持PNG格式图片),内存空间足够时调用此方法
   *
   * @param pic 源图片
   * @param srcX 绘制块在源图片的X偏移
   * @param srcY 绘制块在源图片的Y偏移
   * @param w 绘制宽度
   * @param h 绘制高度
   * @param alpha alpha通道值
   * @return
   */
  public static Image createTransparence(Image pic, int srcX, int srcY, int w, int h, int alpha) {

    int[] rgbData = new int[w * h];
    if (alpha < 0 || alpha > 255) {
      return null;
    }
    pic.getRGB(rgbData, 0, w, srcX, srcY, w, h);
    for (int i = rgbData.length - 1; i >= 0; --i) {
      rgbData[i] = RenderUtil.turnTransparence(rgbData[i], alpha);
    }
    return Image.createRGBImage(rgbData, w, h, true);
  }
  /**
   * 创建亮度变换图像(J2ME中只支持PNG格式图片),内存空间足够时调用此方法
   *
   * @param pic
   * @param pic 源图片
   * @param srcX 绘制块在源图片的X偏移
   * @param srcY 绘制块在源图片的Y偏移
   * @param w 绘制宽度
   * @param h 绘制高度
   * @param destX 显示的X坐标
   * @param destY 显示的Y坐标
   * @param delta
   * @return
   */
  public static Image createBright(
      Image pic, int srcX, int srcY, int w, int h, int destX, int destY, int delta) {

    int[] rgbData = new int[w * h];
    if (delta == 0) {
      return null;
    }
    pic.getRGB(rgbData, 0, w, srcX, srcY, w, h);
    for (int i = rgbData.length - 1; i >= 0; --i) {
      rgbData[i] = RenderUtil.turnBright(rgbData[i], delta);
    }
    return Image.createRGBImage(rgbData, w, h, true);
  }
Example #10
0
  /**
   * 逐行绘制透明变换图像(J2ME中只支持PNG格式图片),内存不够时调用次方法,绘制效率偏低
   *
   * @param g
   * @param pic 源图片
   * @param srcX 绘制块在源图片的X偏移
   * @param srcY 绘制块在源图片的Y偏移
   * @param w 绘制宽度
   * @param h 绘制高度
   * @param destX 显示的X坐标
   * @param destY 显示的Y坐标
   * @param alpha alpha通道值
   */
  public static void drawTransparenceByLine(
      SGraphics g, Image pic, int srcX, int srcY, int w, int h, int destX, int destY, int alpha) {

    int[] rgbData = new int[w];
    if (alpha < 0 || alpha > 255) {
      return;
    }
    for (int hd = h - 1; hd >= 0; --hd) {
      pic.getRGB(rgbData, 0, w, srcX, srcY + hd, w, 1);
      for (int i = rgbData.length - 1; i >= 0; --i) {
        rgbData[i] = RenderUtil.turnTransparence(rgbData[i], alpha);
      }
      g.drawRGB(rgbData, 0, w, destX, destY + hd, w, 1, true);
    }
  }
Example #11
0
  /**
   * 绘制亮度变换图像(J2ME中只支持PNG格式图片),内存空间足够时调用此方法
   *
   * @param g
   * @param pic 源图片
   * @param srcX 绘制块在源图片的X偏移
   * @param srcY 绘制块在源图片的Y偏移
   * @param w 绘制宽度
   * @param h 绘制高度
   * @param destX 显示的X坐标
   * @param destY 显示的Y坐标
   * @param delta
   */
  public static void drawBright(
      SGraphics g, Image pic, int srcX, int srcY, int w, int h, int destX, int destY, int delta) {

    int[] rgbData = new int[w * h];
    Image brightImg;
    if (delta == 0) {
      return;
    }
    pic.getRGB(rgbData, 0, w, srcX, srcY, w, h);
    for (int i = rgbData.length - 1; i >= 0; --i) {
      rgbData[i] = RenderUtil.turnBright(rgbData[i], delta);
    }
    brightImg = Image.createRGBImage(rgbData, w, h, true);
    g.drawImage(brightImg, destX, destY, 0);
  }
Example #12
0
  /**
   * 逐行绘制亮度变换图像(J2ME中只支持PNG格式图片),内存不够时调用次方法,绘制效率偏低
   *
   * @param g
   * @param pic 源图片
   * @param srcX 绘制块在源图片的X偏移
   * @param srcY 绘制块在源图片的Y偏移
   * @param w 绘制宽度
   * @param h 绘制高度
   * @param destX 显示的X坐标
   * @param destY 显示的Y坐标
   * @param delta
   */
  public static void drawBrightByLine(
      SGraphics g, Image pic, int srcX, int srcY, int w, int h, int destX, int destY, int delta) {

    int[] rgbData = new int[w];
    if (delta == 0) {
      return;
    }
    for (int hd = h - 1; hd >= 0; --hd) {
      pic.getRGB(rgbData, 0, w, srcX, srcY + hd, w, 1);
      for (int i = rgbData.length - 1; i >= 0; --i) {
        rgbData[i] = RenderUtil.turnBright(rgbData[i], delta);
      }
      g.drawRGB(rgbData, 0, w, destX, destY + hd, w, 1, true);
    }
  }
Example #13
0
  /**
   * 绘制透明变换图像(J2ME中只支持PNG格式图片),内存空间足够时调用此方法
   *
   * @param g
   * @param pic 源图片
   * @param srcX 绘制块在源图片的X偏移
   * @param srcY 绘制块在源图片的Y偏移
   * @param w 绘制宽度
   * @param h 绘制高度
   * @param destX 显示的X坐标
   * @param destY 显示的Y坐标
   * @param alpha alpha通道值
   */
  public static void drawTransparence(
      SGraphics g, Image pic, int srcX, int srcY, int w, int h, int destX, int destY, int alpha) {

    int[] rgbData = new int[w * h];
    Image transparenceImg;
    if (alpha < 0 || alpha > 255) {
      return;
    }
    pic.getRGB(rgbData, 0, w, srcX, srcY, w, h);
    for (int i = rgbData.length - 1; i >= 0; --i) {
      rgbData[i] = RenderUtil.turnTransparence(rgbData[i], alpha);
    }
    transparenceImg = Image.createRGBImage(rgbData, w, h, true);
    g.drawImage(transparenceImg, destX, destY, 0);
  }
Example #14
0
  /**
   * Updates all Phong Shader uniforms
   *
   * @param worldMatrix
   * @param projectedMatrix
   * @param material
   */
  @Override
  public void updateUniforms(Matrix4f worldMatrix, Matrix4f projectedMatrix, Material material) {

    if (material.getTexture() != null) {
      material.getTexture().bind();
    } else {
      RenderUtil.unbindTextures();
    }

    setUniform("transformProjected", projectedMatrix);
    setUniform("transform", worldMatrix);
    setUniform("baseColor", material.getColor());
    setUniform("ambientLight", PhongShader.getAmbientLight());
    setUniform("directionalLight", directionalLight);
  }