Initial revision
This commit is contained in:
parent
218ca90543
commit
2186d5f3f9
572 changed files with 2 additions and 29666 deletions
|
@ -1,110 +0,0 @@
|
|||
#include "txioctrl.h"
|
||||
|
||||
#ifdef MaxImageGroups
|
||||
|
||||
#include "list_tem.hpp"
|
||||
|
||||
struct ImageNumber
|
||||
{
|
||||
int group;
|
||||
int offset;
|
||||
|
||||
ImageNumber(){}
|
||||
ImageNumber(int g,int o) : group(g), offset(o) {}
|
||||
|
||||
inline int operator == (ImageNumber const & in2) const
|
||||
{ return group==in2.group && offset==in2.offset; }
|
||||
inline int operator != (ImageNumber const & in2) const
|
||||
{ return ! operator == (in2); }
|
||||
};
|
||||
|
||||
static List<ImageNumber> imgs_used_by_group[MaxImageGroups];
|
||||
|
||||
static List<int> * grps_used_by_image[MaxImageGroups][MaxImages];
|
||||
|
||||
void MarkImageInUseByGroup(int img_group, int img_num_offset, int group_using)
|
||||
{
|
||||
if (imgs_used_by_group[group_using].contains(ImageNumber(img_group,img_num_offset))) return;
|
||||
|
||||
imgs_used_by_group[group_using].add_entry(ImageNumber(img_group,img_num_offset));
|
||||
|
||||
List<int> * & grps_used_by_imageR = grps_used_by_image[img_group][img_num_offset];
|
||||
|
||||
if (!grps_used_by_imageR)
|
||||
grps_used_by_imageR = new List<int>(img_group); // includes itself
|
||||
|
||||
if (!grps_used_by_imageR->contains(group_using))
|
||||
grps_used_by_imageR->add_entry(group_using);
|
||||
}
|
||||
|
||||
int IsImageInUse(int img_group, int img_num_offset)
|
||||
{
|
||||
if (grps_used_by_image[img_group][img_num_offset])
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
int CanDeleteImage(int img_group, int img_num_offset)
|
||||
{
|
||||
if (grps_used_by_image[img_group][img_num_offset])
|
||||
{
|
||||
if (grps_used_by_image[img_group][img_num_offset]->contains(img_group))
|
||||
{
|
||||
grps_used_by_image[img_group][img_num_offset]->delete_entry(img_group); // remove itself
|
||||
if (!grps_used_by_image[img_group][img_num_offset]->size())
|
||||
{
|
||||
delete grps_used_by_image[img_group][img_num_offset];
|
||||
grps_used_by_image[img_group][img_num_offset] = 0;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
|
||||
void ImageGroupFreed(int img_group)
|
||||
{
|
||||
while (imgs_used_by_group[img_group].size())
|
||||
{
|
||||
ImageNumber used = imgs_used_by_group[img_group].first_entry();
|
||||
|
||||
List<int> * & grps_used_by_imageR = grps_used_by_image[used.group][used.offset];
|
||||
|
||||
grps_used_by_imageR->delete_entry(img_group);
|
||||
|
||||
if (!grps_used_by_imageR->size())
|
||||
{
|
||||
NowDeleteImage(used.group,used.offset);
|
||||
delete grps_used_by_imageR;
|
||||
grps_used_by_imageR = 0;
|
||||
}
|
||||
|
||||
imgs_used_by_group[img_group].delete_first_entry();
|
||||
}
|
||||
}
|
||||
|
||||
void EnumSharedImages(int group_num, int numimages, ImageNumberCallbackFunction callback_fn, void * user)
|
||||
{
|
||||
for (int i=0; i<numimages; ++i)
|
||||
{
|
||||
if (grps_used_by_image[group_num][i])
|
||||
callback_fn(i,user);
|
||||
}
|
||||
}
|
||||
|
||||
void EnumLeftoverImages(int group_num, int numimages, ImageNumberCallbackFunction callback_fn, void * user)
|
||||
{
|
||||
for (int i=numimages; i<MaxImages; ++i)
|
||||
{
|
||||
if (grps_used_by_image[group_num][i])
|
||||
callback_fn(i,user);
|
||||
}
|
||||
}
|
||||
|
||||
#endif // MaxImageGroups
|
Loading…
Add table
Add a link
Reference in a new issue