Beispiel #1
0
void JpegStegoDecoder::StegoGetMessage(void *cinfo, JBLOCKROW *MCU_data)
{
	/*JpegDCallbackData *pJCD = static_cast<JpegDCallbackData*>(cinfo->stegoDecoderData.stegoObjPtr);
	JpegStegoDecoder *pJSD = static_cast<JpegStegoDecoder*>(pJCD->stegoObjPtr);*/
	j_decompress_ptr *dcinfop = static_cast<j_decompress_ptr*>(cinfo);
	j_decompress_ptr dcinfo = *dcinfop;
	JpegStegoDecoder *pJSD =
			static_cast<JpegStegoDecoder*>(dcinfo->stego.stegoObjPtr);
	if(!pJSD->get_message)// || !pJSD->mesArray.IsArraySet())
		return;
	try
	{
		int DCT_pos;
		jpeg_component_info *compptr;

		for (int blkn = 0; blkn < dcinfo->blocks_in_MCU; blkn++)
		{
			compptr = dcinfo->cur_comp_info[dcinfo->MCU_membership[blkn]];
			if(pJSD->work_component == ALL || pJSD->work_component == compptr->component_id)	//check current component
			{
				if (pJSD->get_message) {
					DCT_pos = /*pJSD->*/selectPosition(MCU_data[blkn][0]);
					BYTE bit = abs(MCU_data[blkn][0][DCT_pos]);
					//cerr << (int)bit;
					if (DCT_pos != -1 && (bit == 1 || bit == 0)) {
						pJSD->mit = bit;
						pJSD->mit++;
					}
				}
				if (pJSD->blog) {
					pJSD->slog->writeData(compptr->component_id);
					for (int i = 0; i < 8; i++) {
						for (int j = 0; j < 8; j++) {
							pJSD->slog->writeCoef(MCU_data[blkn][0][i * 8 + j]);
						}
						pJSD->slog->endStr();
					}
				pJSD->slog->endBlock();
				}
			}
		}


	}catch(EndOfMessageException exc)
	{
		cerr << exc.getMessage()<<endl;
		//pJSD->sData.isStego = 0;
		dcinfo->stego.isStego=0;
		pJSD->get_message = false;
	}catch(DamagedMessageException exc)
	{
		cerr << exc.getMessage()<<endl;
		//pJSD->sData.isStego = 0;
		dcinfo->stego.isStego=0;
		pJSD->get_message = false;	
	}catch(Exception exc)
	{		
		cerr << exc.getMessage()<<endl;		
	}
}
CQAlignAnchor::
CQAlignAnchor(QWidget *parent) :
 QWidget(parent)
{
  QGridLayout *layout = new QGridLayout(this);
  layout->setMargin(0); layout->setSpacing(2);

  QLabel *anchorLabel = new QLabel("<small><b>Anchor</b></small>");

  layout->addWidget(anchorLabel, 0, 0, 1, 2);

  objectCombo_ = new QComboBox;

  objectCombo_->addItem("Selection");
  objectCombo_->addItem("Object");
  objectCombo_->addItem("Position");

  connect(objectCombo_, SIGNAL(activated(const QString &)),
          this, SLOT(objectSlot(const QString &)));

  layout->addWidget(objectCombo_, 1, 0);

  anchorStack_ = new QStackedWidget;

  anchorLabel_  = new QWidget;
  anchorObject_ = new CQAlignAnchorObject;
  anchorPoint_  = new CQAlignAnchorPoint;

  anchorStack_->addWidget(anchorLabel_);
  anchorStack_->addWidget(anchorObject_);
  anchorStack_->addWidget(anchorPoint_);

  layout->addWidget(anchorStack_, 1, 1);

  connect(anchorObject_, SIGNAL(selectObject()), this, SIGNAL(selectObject()));
  connect(anchorObject_, SIGNAL(cancelSelect()), this, SIGNAL(cancelSelect()));

  connect(anchorPoint_, SIGNAL(selectPoint()), this, SIGNAL(selectPosition()));
  connect(anchorPoint_, SIGNAL(cancelSelect()), this, SIGNAL(cancelSelect()));

  //-----

  updateState();
}
void
CQIllustratorAlignToolbar::
addWidgets()
{
  QBoxLayout *layout = qobject_cast<QBoxLayout *>(CQIllustratorToolbar::layout());

  QGridLayout *grid = new QGridLayout;
  grid->setMargin(0); grid->setSpacing(2);

  layout->addLayout(grid);

  //-----

  QTabWidget *tab = new QTabWidget;

  QFont font = tab->font();

  font.setPointSizeF(font.pointSizeF()*0.7);

  tab->setFont(font);

  //------

  alignw_ = new CQAlignButtons;

  tab->addTab(alignw_, "Align");

  connect(alignw_, SIGNAL(alignLeft()), this, SIGNAL(alignLeft()));
  connect(alignw_, SIGNAL(alignBottom()), this, SIGNAL(alignBottom()));
  connect(alignw_, SIGNAL(alignRight()), this, SIGNAL(alignRight()));
  connect(alignw_, SIGNAL(alignTop()), this, SIGNAL(alignTop()));
  connect(alignw_, SIGNAL(alignHorizontal()), this, SIGNAL(alignHorizontal()));
  connect(alignw_, SIGNAL(alignVertical()), this, SIGNAL(alignVertical()));

  connect(alignw_, SIGNAL(alignLeftPreview()), this, SIGNAL(alignLeftPreview()));
  connect(alignw_, SIGNAL(alignBottomPreview()), this, SIGNAL(alignBottomPreview()));
  connect(alignw_, SIGNAL(alignRightPreview()), this, SIGNAL(alignRightPreview()));
  connect(alignw_, SIGNAL(alignTopPreview()), this, SIGNAL(alignTopPreview()));
  connect(alignw_, SIGNAL(alignHorizontalPreview()), this, SIGNAL(alignHorizontalPreview()));
  connect(alignw_, SIGNAL(alignVerticalPreview()), this, SIGNAL(alignVerticalPreview()));

  connect(alignw_, SIGNAL(alignPreviewClear()), this, SIGNAL(alignPreviewClear()));

  //------

  distw_ = new CQDistButtons;

  tab->addTab(distw_, "Distribute");

  //------

  spreadw_ = new CQSpreadButtons;

  tab->addTab(spreadw_, "Spread");

  //------

  grid->addWidget(tab, 0, 0, 2, 1);

  //------

  QLabel *olabel = new QLabel("<small><b>Offset</b></small>");

  offset_ = new CQRealEdit(0.0);

  offset_->setFocusPolicy(Qt::ClickFocus);

  grid->addWidget(olabel , 0, 1);
  grid->addWidget(offset_, 1, 1);

  //------

  anchor_ = new CQAlignAnchor;

  connect(anchor_, SIGNAL(selectObject()), this, SIGNAL(selectAnchorObject()));
  connect(anchor_, SIGNAL(selectPosition()), this, SIGNAL(selectAnchorPosition()));
  connect(anchor_, SIGNAL(cancelSelect()), this, SIGNAL(cancelSelectAnchor()));

  grid->addWidget(anchor_, 0, 2, 2, 1);

  //------

  grid->setColumnStretch(3, 1);
}