📄 tilecomdata.cpp
字号:
>1)<<1;
bi=m*w+n;
m_pnTreeValues[r+1][(m>>1)*((w+1)>>1)+(n>>1)]=((m_pnTreeValues[r][bi]<m_pnTreeValues[r][bi+w])?m_pnTreeValues[r][bi]:m_pnTreeValues[r][bi+w]);
}
}
if (h%2!=0)
{
m=((h>>1)<<1);
for (n=((w>>1)<<1)-2;n>=0;n-=2)
{
bi=m*w+n;
m_pnTreeValues[r+1][(m>>1)*((w+1)>>1)+(n>>1)]=((m_pnTreeValues[r][bi]<m_pnTreeValues[r][bi+1])? m_pnTreeValues[r][bi]:m_pnTreeValues[r][bi+1]);
}
if (w%2!=0)
{
n=(w>>1)<<1;
m_pnTreeValues[r+1][(m>>1)*((w+1)>>1)+(n>>1)]=m_pnTreeValues[r][m*w+n];
}
}
}
}
void CTagTreeEncoder::SetValue(int *pnTreeValues)
{
if (m_nLevs==0)
{
printf("TagTree's Level cann't be 0 !\n");
return;
}
int nMinTreeValue;
nMinTreeValue=m_pnTreeStates[m_nLevs-1][0];
int i;
for (i=0;i<m_nBaseWidth*m_nBaseHeight;i++)
{
if (((m_pnTreeValues[0][i]<nMinTreeValue)||(pnTreeValues[i]<nMinTreeValue))&&(m_pnTreeValues[0][i]!=pnTreeValues[i]))
{
printf("TagTree set values error!\n");
return;
}
m_pnTreeValues[0][i]=pnTreeValues[i];
}
RecalcTreeValues();
}
void CTagTreeEncoder::SetValue(int m, int n, int nValue)
{
if ((m_nLevs==0)||(n>=m_nBaseWidth)||(m>=m_nBaseHeight)||(nValue<m_pnTreeStates[m_nLevs-1][0])||(m_pnTreeValues[0][m*m_nBaseWidth+n]<m_pnTreeStates[m_nLevs-1][0]))
{
printf("TagTree set value error!\n");
return;
}
m_pnTreeValues[0][m*m_nBaseWidth+n]=nValue;
int r,index;
for (r=1;r<m_nLevs;r++)
{
index=(m>>r)*((m_nBaseWidth+(1<<r)-1)>>r)+(n>>r);
if (nValue<m_pnTreeValues[r][index])
{
m_pnTreeValues[r][index]=nValue;
}
else
{
break;
}
}
}
void CTagTreeEncoder::Reset(int *pnValues)
{
int r;
int w=m_nBaseWidth,h=m_nBaseHeight;
int OrgVal=0;
for(r=0;r<m_nLevs;r++)
{
InitializeArray(m_pnTreeStates[r],w*h,OrgVal);
}
int k;
for (k=0;k<m_nBaseWidth*m_nBaseHeight-1;k++)
m_pnTreeValues[0][k]=pnValues[k];
RecalcTreeValues();
m_bSaved=false;
}
/**
* Encodes information for the specified element of the tree,
* given the t
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -