/*
 * BEGIN FLOCK GPL
 *
 * Copyright Flock Inc. 2005-2009
 * http://flock.com
 *
 * This file may be used under the terms of the
 * GNU General Public License Version 2 or later (the "GPL"),
 * http://www.gnu.org/licenses/gpl.html
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * END FLOCK GPL
 */

#ifndef __flockImageTransformService_h__
#define __flockImageTransformService_h__

#include "flockIImageTransformService.h"

#include "imgIRequest.h"
#include "imgIDecoderObserver.h"
#include "imgILoader.h"
#include "nsIObserver.h"

#include "nsInterfaceHashtable.h"


class flockImageTransformService : public flockIImageTransformService,
                                   public imgIDecoderObserver,
                                   public nsIObserver {
public:
    flockImageTransformService();

    NS_DECL_ISUPPORTS
    NS_DECL_FLOCKIIMAGETRANSFORMSERVICE
    NS_DECL_IMGIDECODEROBSERVER
    NS_DECL_IMGICONTAINEROBSERVER
    NS_DECL_NSIOBSERVER

    static flockImageTransformService *GetSingleton();

private:
    ~flockImageTransformService();

    NS_IMETHOD Initialize();

    nsCOMPtr<imgILoader> mImageLoaderService;

    nsInterfaceHashtable<nsISupportsHashKey, flockIImageTransformListener> mListeners;
};

#endif
