//
// Copyright (C) 1999-2002 Toshikaz Hirabayashi
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
// TOSHIKAZ HIRABAYASHI BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
// OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
//
// Except as contained in this notice, the name of Toshikaz Hirabayashi shall
// not be used in advertising or otherwise to promote the sale, use or other
// dealings in this Software without prior written authorization from
// Toshikaz Hirabayashi.

#include <unistd.h>
#include <WScom.h>
#include <WSCimageSet.h>
#include <WSDfileSystem.h>
#include <WStcpcom.h>
#include <nx/WSDnxImage.h>
#include <nx/WSDnxAppDev.h>
#include <nx/WSDnxColor.h>


WSMFclassInit(WSDnxImage,WSDimage);

WSDimage* _nxImage_create_handler(){
  WSDimage* image = new WSDnxImage();
  return image;
};

void  _nxImage_init(){
    WSGIappImageSet()->setCreateHandler(_nxImage_create_handler);
};

WSDnxImage::WSDnxImage(){
}

WSDnxImage::~WSDnxImage(){
  destroy();
}

long WSDnxImage::initialize(){
  if (_value1 > 0){
    return WS_NO_ERR;
  }
  char* iname = getSrc();
  if (iname == NULL || !strcmp(iname,"") ){
    return WS_NO_ERR;
  }

  WSCstring tmp;
  tmp.setString(iname);
  WSCstring in;
  in.setString( WSGIappFileSystem()->adjustFileName(tmp.getString()) );

  void* mem_context = 0;
  void* mem_context2 = 0;
  long width = 0;
  long height = 0;

  // TODO read image file

  setImageWidth(width);
  setImageHeight(height);
  setValue1((long)mem_context);
  setValue2((long)mem_context2);

  return WS_NO_ERR;
}

long WSDnxImage::destroy(){
  long mem_context = (long)_value1;
  if (mem_context != 0 && mem_context != -1 ){
    // TODO destroy mem_context
    setValue1((long)-1);
  }
  long mem_context2 = (long)_value2;
  if (mem_context2 != 0 && mem_context2 != -1 ){
    // TODO destroy mem_context2
    setValue2((long)-1);
  }
  return WS_NO_ERR;
}

long WSDnxImage::createImage(){
  return WS_NO_ERR;
}

