/*
 *                            COPYRIGHT
 *
 *  cschem - modular/flexible schematics editor - libcschem (core library)
 *  Copyright (C) 2018 Tibor 'Igor2' Palinkas
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; either
 *  version 2.1 of the License, or (at your option) any later version.*
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, write to the Free Software
 *  Foundation, Inc., 31 Milk Street, # 960789 Boston, MA 02196 USA
 *
 *  Contact:
 *    Project page: http://repo.hu/projects/sch-rnd
 *    contact lead developer: http://www.repo.hu/projects/sch-rnd/contact.html
 *    mailing list: http://www.repo.hu/projects/sch-rnd/contact.html
 */


#include "config.h"

#include "event.h"
#include "concrete.h"
#include "cnc_obj.h"
#include "cnc_bitmap.h"
#include "op_common.h"

csch_cbitmap_t *csch_cbitmap_alloc(csch_sheet_t *sheet, csch_cgrp_t *parent, csch_oid_t oid)
{
	csch_cbitmap_t *bitmap;

	bitmap = htip_get(&parent->id2obj, oid);
	if (bitmap != NULL)
		return NULL;
	bitmap = calloc(sizeof(csch_cbitmap_t), 1);

	csch_cobj_init(&bitmap->hdr, sheet, parent, oid, CSCH_CTYPE_BITMAP);
	return bitmap;
}

csch_cbitmap_t *csch_cbitmap_dup(csch_sheet_t *sheet, csch_cgrp_t *parent, const csch_cbitmap_t *src, int keep_id)
{
	csch_cbitmap_t *dst = csch_cbitmap_alloc(sheet, parent, CSCH_KEEP_OID(parent, src->hdr.oid));
	dst->inst_x1 = src->inst_x1;
	dst->inst_y1 = src->inst_y1;
	dst->spec_x1 = src->spec_x1;
	dst->spec_y1 = src->spec_y1;
	dst->sx = src->sx;
	dst->sy = src->sy;
	dst->transp = src->transp;
	TODO("bitmap: copy or reference the pixmap?");
	return dst;
}


void csch_cbitmap_free(csch_cbitmap_t *bitmap)
{
	csch_cobj_uninit(&bitmap->hdr);
	free(bitmap);
}

csch_cbitmap_t *csch_cbitmap_get(csch_sheet_t *sheet, csch_cgrp_t *grp, csch_oid_t oid)
{
	csch_cbitmap_t *bitmap = htip_get(&grp->id2obj, oid);
	if ((bitmap != NULL) && (bitmap->hdr.type != CSCH_CTYPE_BITMAP))
		return NULL;
	return bitmap;
}

