コード例 #1
0
std::list<CvBox2D> BouyBaseObject::GetBounding(const IplImage * imgIn, IplImage * imgOut) const
{

    std::list<CvBox2D> blobList;
    if(imgIn == NULL) return blobList;
    IplImage * imgOut1 = GetMask(imgIn);
    if(imgOut1)
    {
        blobList = Zebulon::Vision::VisionUtils::GetBlobBoxes(imgOut1,.001,.95);
        if (imgOut)
        {
            cvCopy(imgOut1, imgOut);
        }
        cvReleaseImage(&imgOut1);
    }
    return blobList;
}
コード例 #2
0
ファイル: GLVertexProgram.cpp プロジェクト: 0179cool/rpcs3
void GLVertexDecompilerThread::SetDST(bool is_sca, std::string value)
{
	if(d0.cond == 0) return;

	enum
	{
		lt = 0x1,
		eq = 0x2,
		gt = 0x4,
	};

	std::string mask = GetMask(is_sca);

	value += mask;

	if(is_sca && d0.vec_result)
	{
		value = "vec4(" + value + ")" + mask;
	}

	if(d0.staturate)
	{
		value = "clamp(" + value + ", 0.0, 1.0)";
	}

	std::string dest;

	if (d0.cond_update_enable_0 && d0.cond_update_enable_1)
	{
		dest += m_parr.AddParam(PARAM_NONE, "vec4", "cc" + std::to_string(d0.cond_reg_sel_1), "vec4(0.0)") + mask  + " = ";
	}

	if (d3.dst != 0x1f || (is_sca ? d3.sca_dst_tmp != 0x3f : d0.dst_tmp != 0x3f))
	{
		dest += GetDST(is_sca) + mask + " = ";
	}

	std::string code;

	if (d0.cond_test_enable)
		code += "$ifcond ";

	code += dest + value;

	AddCode(code + ";");
}
コード例 #3
0
ファイル: bitmap.cpp プロジェクト: EdgarTx/wx
wxImage wxBitmap::ConvertToImage() const
{
    wxCHECK_MSG( Ok(), wxNullImage, wxT("invalid bitmap") );

    wxImage img(GetWidth(), GetHeight());
    wxIDirectFBSurfacePtr dst(CreateSurfaceForImage(img));
    wxIDirectFBSurfacePtr src = M_BITMAP->m_surface;

    if ( !dst->SetBlittingFlags(DSBLIT_NOFX) )
        return wxNullImage;
    if ( !dst->Blit(src->GetRaw(), NULL, 0, 0) )
        return wxNullImage;

    // FIXME: implement mask setting in the image
    wxASSERT_MSG( GetMask() == NULL, _T("bitmap masks are ignored for now") );

    return img;
}
コード例 #4
0
BOOL NetworkPrefs2Gadgets
(
    struct NetPEditor_DATA *data
)
{
    NNSET(data->netped_deviceString, MUIA_String_Contents, (IPTR)GetDevice());
    NNSET(data->netped_IPString, MUIA_String_Contents, (IPTR)GetIP());
    NNSET(data->netped_maskString, MUIA_String_Contents, (IPTR)GetMask());
    NNSET(data->netped_gateString, MUIA_String_Contents, (IPTR)GetGate());
    NNSET(data->netped_DNSString[0], MUIA_String_Contents, (IPTR)GetDNS(0));
    NNSET(data->netped_DNSString[1], MUIA_String_Contents, (IPTR)GetDNS(1));
    NNSET(data->netped_hostString, MUIA_String_Contents, (IPTR)GetHost());
    NNSET(data->netped_domainString, MUIA_String_Contents, (IPTR)GetDomain());
    NNSET(data->netped_DHCPState, MUIA_Cycle_Active, (IPTR)GetDHCP());
    NNSET(data->netped_Autostart, MUIA_Selected, (IPTR)GetAutostart());

    return TRUE;
}
コード例 #5
0
void VertexProgramDecompiler::SetDST(bool is_sca, std::string value)
{
	if (d0.cond == 0) return;

	enum
	{
		lt = 0x1,
		eq = 0x2,
		gt = 0x4,
	};

	std::string mask = GetMask(is_sca);

	if (is_sca)
	{
		value = getFloatTypeName(4) + "(" + value + ")";
	}

	value += mask;

	if (d0.staturate)
	{
		value = "clamp(" + value + ", 0.0, 1.0)";
	}

	std::string dest;

	if (d0.cond_update_enable_0 && d0.cond_update_enable_1)
	{
		dest = m_parr.AddParam(PF_PARAM_NONE, getFloatTypeName(4), "cc" + std::to_string(d0.cond_reg_sel_1), getFloatTypeName(4) + "(0., 0., 0., 0.)") + mask;
	}
	else if (d3.dst != 0x1f || (is_sca ? d3.sca_dst_tmp != 0x3f : d0.dst_tmp != 0x3f))
	{
		dest = GetDST(is_sca) + mask;
	}

	//std::string code;
	//if (d0.cond_test_enable)
	//	code += "$ifcond ";
	//code += dest + value;
	//AddCode(code + ";");

	AddCodeCond(Format(dest), value);
}
コード例 #6
0
void OutPutAgent::handleEvent(WEvent& event)
{
	if (outMode == OUT_NULL)
	{
		// No out put device available here, return immediate.
		return;
	}

	if (event.what & GetMask( ))
	{
		struct tm * ltm;
		//char buf[256];
		char buf[512] = {0};
		int len = (event.msgPtr != NULL) ? strlen(event.msgPtr) : 0;

		ltm = localtime(&event.prEvent.timeStamp);
		//sprintf(buf, "<%04d-%02d-%02d %02d:%02d:%02d>   ", ltm->tm_year+1900, ltm->tm_mon+1,
		//				ltm->tm_mday, ltm->tm_hour, ltm->tm_min, ltm->tm_sec);
		//memcpy(buf+24, event.msgPtr, len); //@zh 很有问题???缓冲区溢出
		//buf[24+len] = '\0';

		snprintf(buf, 511, "<%04d-%02d-%02d %02d:%02d:%02d>   %s", ltm->tm_year+1900, ltm->tm_mon+1,
		         ltm->tm_mday, ltm->tm_hour, ltm->tm_min, ltm->tm_sec, event.msgPtr);

		if (outMode & OUT_STDOUT)
		{
			printf("%s\n", buf);
		}
		if (outMode & OUT_STDERR)
		{
			fprintf(stderr, "%s\n", buf);
		}
		if (outMode & OUT_PTERM)
		{
			// Send the message to PTERM process.
			// ......
		}
		if (outMode & OUT_FILE)
		{
			// Log the message into disk file.
			log.Log(buf);
		}
	}
}
コード例 #7
0
ファイル: card.cpp プロジェクト: BackupTheBerlios/smx-svn
CStr VerifyCard(CStr CardNumber)
{
	CardNumber = CleanCard(CardNumber);
	
	if (CardNumber.Length() == 0) 
		return 0;

	const char * b = CardNumber;
	const char * p;

	p = b;
	while (*p) {
		if (!isdigit(*p))
			return 0;
		++p;
	}

	int l = p - b;

   // check the length
	if ( l > 28 )
		return 0;

	int type = GetCardType(b, l);

	int mask = GetMask( type );

    if ( (l < 12) || ( (ShiftMask(l) && mask) == 0 ) )
		return 0;

   // check the checksum computation
	bool doChecksum;
	if ( type == cc_enroute )
		doChecksum = false;
	else
		doChecksum = true;

   if ( doChecksum && ( !ConfirmChecksum( CardNumber ) ) )
		return 0;

   return GetCardName(type);
}
コード例 #8
0
void InnerGlowStyle::operator() (Pixels destPixels, Pixels maskPixels)
{
  if (!active)
    return;

  SharedTable <Colour> table;
  
  if (reverse)
    table = colours.withReversedStops().createLookupTable ();
  else
    table = colours.createLookupTable ();

#if 1
  // Anti-Aliased
  //
  DistanceTransform::Meijster::calculateAntiAliased (
    RenderPixelAntiAliased (
      destPixels,
      opacity,
      choke,
      size,
      table),
    GetMask (maskPixels),
    maskPixels.getWidth (),
    maskPixels.getHeight (),
    DistanceTransform::Meijster::EuclideanMetric ());
#else
  // Regular
  //
  DistanceTransform::Meijster::calculate (
    RenderPixel (
      destPixels,
      opacity,
      choke,
      size,
      table),
    TestMask (maskPixels),
    maskPixels.getWidth (),
    maskPixels.getHeight (),
    DistanceTransform::Meijster::EuclideanMetric ());
#endif
}
コード例 #9
0
void AllFiles::SearchFiles(const char* path, unsigned long& count)
{
	AccessFile pAccFile;
	ClientFile pClFile;
	char direct[256] = "";
	char direct_copy[256] = "";
	strcpy(direct, path);
	strcat(direct, "\\*.*");
	_finddata_t* fi = new _finddata_t;//alternative - unique_ptr<_finddata_t> fi(new _finddata_t);
	intptr_t handle = 0, copy_handle = 0;
	handle = copy_handle = _findfirst(direct, fi);//handle = copy_handle = _findfirst(dir, fi.get());
	while (copy_handle != -1)
	{
		if (fi->name[0] != '.')
		{
			if (fi->attrib & _A_SUBDIR)
			{
				strcpy(direct_copy, path);
				strcat(direct_copy, "\\");
				strcat(direct_copy, fi->name);
				SearchFiles(direct_copy, count);
			}
			else
			{
				itoa(count, pAccFile.IDFile, 10);
				GetMask(pAccFile.name, pAccFile.mask, fi->name);
				//strcpy(pAccFile.size, std::to_string(fi->size).c_str());
				GetFileSize(pAccFile.size, fi->size);
				CString PathFile = path;
				pClFile.SetClientFile(pAccFile, PathFile);
				m_ClFiles.emplace_back(pClFile);
				count++;
			}
		}
		copy_handle = _findnext(handle, fi);
	}
	_findclose(handle);
	_findclose(copy_handle);
	if (fi)
		delete fi;
}
コード例 #10
0
//  Gets the current mask if any.
//  If no mask exists then create one using fOn and fNoUndo.
//  bCreated is TRUE if a new mask was created. 
LPMASK CImage::GetMaskEx(BOOL fOn, BOOL fNoUndo, LPINT bCreated, LPRECT lpUpdateRect)
{
    LPMASK lpMask;
    LPFRAME lpFrame;
    FRMTYPEINFO TypeInfo;
    FRMDATATYPE FrameType = FDT_GRAYSCALE;

    AstralSetRectEmpty(lpUpdateRect);
    if (lpMask = GetMask())
    {
        if (bCreated)
            *bCreated = FALSE;
        return(lpMask);
    }
    lpFrame = GetBaseEditFrame();
    FrameGetTypeInfo(lpFrame, &TypeInfo);
    if (TypeInfo.DataType == FDT_LINEART && Mask.OneBitMask)
       FrameType = FDT_LINEART;
    if (!(lpMask = MaskCreate(NULL, FrameXSize(lpFrame),
                                FrameYSize(lpFrame),
                                fOn, 
                                fNoUndo, FrameType)))
    {
        Message( IDS_EMEMALLOC );
        return(NULL);
    }
	// sync up the resolution of the image data and the mask
	// don't ever rely on the mask's resolution being correct
	// cause other size can change the image data resolution
	// without changing the mask's resolution.  Also, there are
	// other places the mask gets created without syncing up
	// the resolution.  I am doing it here so we can begin
	// to track it correctly (Ted)
	FrameSetResolution(AlphaGetEditFrame(lpMask), FrameResolution(lpFrame));
    if (bCreated)
        *bCreated = TRUE;
    if (!Control.UseMaskAndObjects)
        GetObjectMarqueeRect(this, lpUpdateRect);
    SetMask(lpMask);
    return(lpMask);
}
コード例 #11
0
ファイル: bouyobject.cpp プロジェクト: ShowLove/Robotics_Club
std::list<CvBox2D> BouyObject::GetBounding(const IplImage * imgIn, IplImage * debugOut) const
{

    std::list<CvBox2D> blobList;
    if(imgIn == NULL) return blobList;
    IplImage * imgOut1 = GetMask(imgIn);
    if(imgOut1)
    {
        blobList = Zebulon::Vision::VisionUtils::GetBlobBoxes(imgOut1,.001,.95,false);
        if (debugOut)
        {
            //cvConvertImage(imgOut1, debugOut);
            if(blobList.size() > 0)
            {
                VisionUtils::DrawSquare(debugOut,blobList.front(),mNearColor);
            }
        }
        cvReleaseImage(&imgOut1);
    }
    return blobList;
}
コード例 #12
0
ファイル: ignore.cpp プロジェクト: truefriend-cz/miranda-ng
BOOL IsIgnored(MCONTACT hContact, WORD eventType)
{
	WORD ignoreID = 0;
	DWORD mask = GetMask(hContact);

	switch(eventType) {
		case EVENTTYPE_MESSAGE:
			ignoreID = 0;
			break;
		case EVENTTYPE_URL:
			ignoreID = 1;
			break;
		case EVENTTYPE_FILE:
			ignoreID = 2;
			break;
		default:
			ignoreID = 3;
	}

	return (mask>>ignoreID)&1;
}
コード例 #13
0
std::string VertexProgramDecompiler::GetDST(bool isSca)
{
	std::string ret;

	std::string mask = GetMask(isSca);

	switch ((isSca && d3.sca_dst_tmp != 0x3f) ? 0x1f : d3.dst)
	{
	case 0x1f:
		ret += m_parr.AddParam(PF_PARAM_NONE, getFloatTypeName(4), std::string("tmp") + std::to_string(isSca ? d3.sca_dst_tmp : d0.dst_tmp)) + mask;
		break;

	default:
		if (d3.dst > 15)
			LOG_ERROR(RSX, "dst index out of range: %u", d3.dst);
		ret += m_parr.AddParam(PF_PARAM_NONE, getFloatTypeName(4), std::string("dst_reg") + std::to_string(d3.dst), d3.dst == 0 ? getFloatTypeName(4) + "(0.0f, 0.0f, 0.0f, 1.0f)" : getFloatTypeName(4) + "(0.0, 0.0, 0.0, 0.0)") + mask;
		// Handle double destination register as 'dst_reg = tmp'
		if (d0.dst_tmp != 0x3f)
			ret += " = " + m_parr.AddParam(PF_PARAM_NONE, getFloatTypeName(4), std::string("tmp") + std::to_string(d0.dst_tmp)) + mask;
		break;
	}

	return ret;
}
コード例 #14
0
ファイル: CORNMENT.CPP プロジェクト: jimmccurdy/ArchiveGit
void COrnament::Draw(void)
{
	ASSERT(m_pContext != NULL);
	ASSERT(!CommitNeeded());

	// Only draw the object if it's visible.
		
	if (CurrentState()->m_fVisible)
	{
		// Make sure the object has been sized.
		
		CDC* pDC = m_pContext->GetDC();
	
		ASSERT(pDC != NULL);
					
		if (pDC != NULL)
		{
			// Save the state of the DC.
					
			int nContext;
					
			if ((nContext = pDC->SaveDC()) != 0)
			{
				// Set MM_TEXT for all the creation and drawing functions.
					
				pDC->SetMapMode(MM_TEXT);
					
				// Get the mask bitmap.
					
				CBitmap* pbmMask;
					
				if ((pbmMask = GetMask()) != NULL)
				{
					CDC MaskDC;
		
					// Create a compatible memory DC and select the mask bitmap into it.
			
					if (MaskDC.CreateCompatibleDC(pDC))
					{
						MaskDC.SetMapMode(MM_TEXT);
										
						CBitmap* pbmOldMask;
				
						if ((pbmOldMask = MaskDC.SelectObject(pbmMask)) != NULL)
						{
							// Get the image bitmap.
								
							CBitmap* pbmImage;
								
							if ((pbmImage = GetImage()) != NULL)
							{
								// Create another compatible memory DC for the image.
					
								CDC ImageDC;
					
								if (ImageDC.CreateCompatibleDC(pDC))
								{
									ImageDC.SetMapMode(MM_TEXT);
										
									CBitmap* pbmOldImage;
										
									if ((pbmOldImage = ImageDC.SelectObject(pbmImage)) != NULL)
									{
										pDC->SetTextColor(RGB(0,0,0));
										pDC->SetBkColor(RGB(255,255,255));
											
										// Compute the drawing position.
											
										CRect crBounds = CurrentState()->m_crBounds;
				
										// Mask out the area where we will be drawing the image.
						
										m_pContext->Toggle(TRUE, &crBounds);
										
										pDC->BitBlt(
											crBounds.left,
											crBounds.top,
											crBounds.Width(),
											crBounds.Height(),
											&MaskDC,
											0,
											0,
											SRCAND);
												
										// Draw the image into the area that was masked out.
						
										pDC->BitBlt(
											crBounds.left,
											crBounds.top,
											crBounds.Width(),
											crBounds.Height(),
											&ImageDC,
											0,
											0,
											SRCPAINT);
								
										m_pContext->Toggle(FALSE, &crBounds);
										ImageDC.SelectObject(pbmOldImage);
									}
								}
							}
								
							MaskDC.SelectObject(pbmOldMask);
						}
					}
				}
						
				pDC->RestoreDC(nContext);
			}
		}
	
		m_pContext->ReleaseDC();
	}
}
コード例 #15
0
ファイル: ignore.cpp プロジェクト: TonyAlloa/miranda-dev
static INT_PTR IsIgnored(WPARAM wParam,LPARAM lParam)
{
	DWORD mask=GetMask((HANDLE)wParam);
	if(lParam<1 || lParam>IGNOREEVENT_MAX) return 1;
	return (mask>>(lParam-1))&1;
}
コード例 #16
0
void CImage::EditUndo( BOOL fEditUndo, BOOL fMaskUndo,
					LPUPDATE_TYPE lpUpdateType, LPRECT lpUpdateRect)
{
RECT rUndo, rUndoMask, rTemp;
LPOBJECT lpBase, lpObject, lpNext;
BOOL fNewSize, fSetupMiniViews, fRemoveMarquee, fUndoDelete, fColorMapChanged;
BOOL fUndoAlpha, fUndoData;
int nDeleted;
LPMASK lpMask;
EDIT_TARGET Target;

AstralSetRectEmpty(lpUpdateRect);

// Initialize things for updating the display
fNewSize = fSetupMiniViews = fUndoDelete = fColorMapChanged = NO;
AstralSetRectEmpty(&rUndo);
AstralSetRectEmpty(&rUndoMask);

// loop through objects doing undo
lpBase = GetBase();
lpObject = NULL;
// get the target of the last edit
Target = EditTarget;
while (lpObject = GetNextObject(lpObject, NO, NO, fEditUndo))
	{
	// See if this is an object we are undoing
	if (fEditUndo)
		{
		// check for special undo processing of a deleted object
		if (lpObject->fDeleted) 
			continue; // do no undo processing for a deleted object
//			{
//			if (Control.UndoObjects && !IsSelectedObject(lpBase))
//				continue;
//			}
		else
		// if target is not the entire image and we are in undo
		// object mode and the object is not selected then
		// skip this object
		if (Target != ET_ALLOBJECTS && Control.UndoObjects && !IsSelectedObject(lpObject))
			continue;
		}
	// Only handle mask undo for the base object
	if (fMaskUndo)
		{
		if (lpObject != lpBase || lpObject->fBothDirty ||
			!lpObject->AlphaDirty)
		continue;
		}

	fUndoData = fUndoAlpha = NO;

	// Do preprocess for doing a data undo
	if (fEditUndo)
		{
		if (lpObject->DataDirty)
			fUndoData = YES;
		// See if we need to undo the alpha for this object
		if ((lpObject != lpBase) && lpObject->lpAlpha && lpObject->AlphaDirty)
			fUndoAlpha = YES;
		if (!fUndoData && !fUndoAlpha)
			continue;
	
		// check to see and undoing/redoing deleted objects will change
		// the select state, if so undraw the object marquee
		if (lpObject == lpBase &&
			lpObject->DataUndoType & UT_DELETEOBJECTS)
			{
			fUndoDelete = YES;
			fRemoveMarquee = NO;
			nDeleted = 0;
			lpNext = lpObject;
			while (lpNext = GetNextObject(lpNext, YES, NO, YES))
				{
				if (lpNext->fUndoDeleted)
					++nDeleted;
				else
				if (lpNext->fDeleted && lpNext->fSelected)
					{
					fRemoveMarquee = YES;
					break;
					}
				}
			if (GetSelObject(NULL) == lpBase && !fRemoveMarquee)
				{
				if (CountObjects() - nDeleted <= 1)
					fRemoveMarquee = YES;
				}
			if (fRemoveMarquee)
				{
				GetObjectMarqueeRect(this, &rTemp);
				AstralUnionRect(lpUpdateRect, lpUpdateRect, &rTemp);
				}
			}
		}
	else // fMaskUndo
	if (!lpObject->AlphaDirty)
		continue;
	else
		fUndoAlpha = YES;

	// do a preprocess for undoing the mask caused either by
	// a mask undo or by an edit function that also edits the mask
	if (((lpObject == lpBase) && fEditUndo && lpObject->fBothDirty) ||
		fMaskUndo)
		{
		if ( lpObject->AlphaUndoType & (UT_CREATEMASK|UT_DELETEMASK) )
			{
			// if the undo is going to delete the mask,
			// we need to undraw the mask
			if (GetMask())
				{
				GetMaskMarqueeRect(this, &rTemp);
				AstralUnionRect(lpUpdateRect, lpUpdateRect, &rTemp);
				if (GetMaskUpdateRect(YES, NO, &rTemp))
					AstralUnionRect(&rUndoMask, &rUndoMask, &rTemp);
				}
			// if the undo is going to create the mask,
			// we need to undraw the object marquees if
			// not in mask and object marquee mode
			else
				{
				if (!Control.UseMaskAndObjects)
					{
					GetObjectMarqueeRect(this, &rTemp);
					AstralUnionRect(lpUpdateRect, lpUpdateRect, &rTemp);
					}
				}
			}
		}

	// Actually do the undo
	ObjEditUndo(lpObject, fUndoData, fUndoAlpha);

	// do a postprocess for undoing the mask
	if ((lpMask = GetMask()) &&
		(((lpObject == lpBase) && fEditUndo && lpObject->fBothDirty) ||
		fMaskUndo))
		{
		// if the undo is going to add the mask, we need to redraw the mask
		if (lpObject->AlphaUndoType & (UT_CREATEMASK|UT_DELETEMASK) )
			{
			if (GetMaskUpdateRect(YES, NO, &rTemp))
				AstralUnionRect(&rUndoMask, &rUndoMask, &rTemp);
			}
		else
			// just redraw the undo area for the mask
			AstralUnionRect(&rUndoMask, &rUndoMask, &lpMask->Pixmap.UndoRect);
		}

	// Setup rectangle for undoing deletion of objects
	// Handled specially so that moved objects will still undo
	// and redo properly
	if (fEditUndo)
		{
		if (lpObject == lpBase &&
			lpObject->DataUndoType & UT_DELETEOBJECTS)
			{
			lpNext = lpObject;
			while (lpNext = GetNextObject(lpNext, YES, NO, YES))
				{
				if (lpNext->fDeleted || lpNext->fUndoDeleted)
					AstralUnionRect(&rUndo, &rUndo, &lpNext->rObject);
				}
			fSetupMiniViews = YES;
			}
		if (lpObject->DataUndoType & UT_COLORMAP)
			fColorMapChanged = YES;

		if (lpObject->Pixmap.fNewFrame)
			{
			/* if new frame, cause window to be redisplayed */
			if (lpObject == lpBase)
				fNewSize = YES;
			else
				{
				if (!fNewSize)
					{
					AstralUnionRect(&rUndo, &rUndo, &lpObject->rObject);
					AstralUnionRect(&rUndo, &rUndo, &lpObject->rUndoObject);
					}
				}
			}
		else
			{
			AstralSetRectEmpty(&rTemp);
			if (fUndoData)
				AstralUnionRect(&rTemp, &rTemp, &lpObject->Pixmap.UndoRect);
			if (fUndoAlpha)
				AstralUnionRect(&rTemp, &rTemp,
						&lpObject->lpAlpha->Pixmap.UndoRect);
			if (rTemp.right >= rTemp.left)
				{
				if (!fNewSize)
					{
					OffsetRect(&rTemp, lpObject->rObject.left,
							lpObject->rObject.top);
					AstralUnionRect(&rUndo, &rUndo, &rTemp);
					}
				}
			if( lpObject->DataUndoType & UT_OBJECTRECT )
				{
				AstralUnionRect( &rUndo, &rUndo,	&lpObject->rObject );
				AstralUnionRect( &rUndo, &rUndo,	&lpObject->rUndoObject );
				}
			}
		}
	}

// now redisplay whatever changes are necessary for the undo
if (fColorMapChanged)
	{
	ImgColorMapChanged(this);
	*lpUpdateType |= UT_DATATYPE;
	}

if (fNewSize)
	{
	*lpUpdateType |= UT_DATATYPE;
	if (lpBase->Pixmap.UndoFrame)
		{
		if ((FrameXSize(lpBase->Pixmap.UndoFrame) ==
			FrameXSize(lpBase->Pixmap.EditFrame)) &&
			(FrameYSize(lpBase->Pixmap.UndoFrame) ==
			FrameYSize(lpBase->Pixmap.EditFrame)))
			fNewSize = NO;
		}
	if (fNewSize)
		*lpUpdateType |= UT_SIZE;
	else
		{
		int dx, dy;

		GetInfo(&dx, &dy, NULL, NULL);
		SetRect(lpUpdateRect, 0, 0, dx-1, dy-1);
		}
	}
else
	{
	if (!AstralIsRectEmpty(lpUpdateRect))
		*lpUpdateType |= UT_ACTIVEAREA;
	if (rUndoMask.right >= rUndoMask.left)
		{
		*lpUpdateType |= UT_ACTIVEAREA;
		AstralUnionRect(lpUpdateRect, lpUpdateRect, &rUndoMask);
		}
	if (rUndo.right >= rUndo.left)
		{
		*lpUpdateType |= UT_AREA;
		AstralUnionRect(lpUpdateRect, lpUpdateRect, &rUndo);
		}
	}
}
コード例 #17
0
void OuterGlowStyle::operator() (Pixels destPixels, Pixels stencilPixels)
{
  if (!active)
    return;

  //int const width = stencilPixels.getWidth ();
  //int const height = stencilPixels.getHeight ();

  SharedTable <Colour> table = colours.createLookupTable ();

  Map2D <int> dist (stencilPixels.getWidth (), stencilPixels.getHeight ());
  Map2D <int> temp (stencilPixels.getWidth (), stencilPixels.getHeight ());

  if (precise)
  {
    LayerStyles::DistanceMap () (
      Pixels::Map2D (stencilPixels),
      temp,
      stencilPixels.getWidth (),
      stencilPixels.getHeight (),
      size);

  #if 0
    DistanceTransform::Meijster::calculateAntiAliased (
      RenderPixelAntiAliased (
        destPixels,
        opacity,
        spread,
        size,
        table),
      GetMask (stencilPixels),
      stencilPixels.getWidth (),
      stencilPixels.getHeight (),
      DistanceTransform::Meijster::EuclideanMetric ());
  #endif
    for (int y = 0; y < temp.getRows (); ++y)
    {
      for (int x = 0; x < temp.getCols (); ++x)
      {
        int const v = temp (x, y);
        if (v > 0)
          temp (x, y) = (255 - v) * 256;
      }
    }
  }
  else
  {
    // "Softer"

    LayerStyles::BoxBlurAndDilateSettings bd (size, spread);

    LayerStyles::GrayscaleDilation () (
      Pixels::Map2D (stencilPixels),
      stencilPixels.getWidth (),
      stencilPixels.getHeight (),
      dist,
      stencilPixels.getWidth (),
      stencilPixels.getHeight (),
      0,
      0,
      bd.getDilatePixels ());

    BoxBlur () (dist, temp, temp.getCols (), temp.getRows (), bd.getBoxBlurRadius ());
  }

  // Fill
  //
  PixelARGB c (0);
  for (int y = 0; y < temp.getRows (); ++y)
  {
    for (int x = 0; x < temp.getCols (); ++x)
    {
      int const v = (temp (x, y) + 128) / 256;

      PixelRGB& dest (*((PixelRGB*)destPixels.getPixelPointer (x, y)));

      c.setAlpha (uint8(v));
      dest.blend (c);
    }
  }
}
コード例 #18
0
OP_STATUS ContentDetector::LookUpInSniffTable(const char *octets, unsigned long octets_length, BOOL must_be_non_scriptable, BOOL check_with_mask,
											  BOOL specific_type_only, ContentDetectorSimpleType specific_type, int &found_at_index)
{
	found_at_index = -1;
	unsigned char pattern[PATTERN_MAX_LENGTH];
	unsigned char mask[PATTERN_MAX_LENGTH];

	for (int index = 0; index < NUMBER_OF_MIMETYPES; index++)
	{
		if (must_be_non_scriptable && GetPatternData(index).scriptable != SAFE)
			continue;

		if (specific_type_only && GetPatternData(index).simple_type != specific_type)
			continue;

		unsigned int octet_index = 0;
		unsigned int pattern_index = 0;

		GetPattern(index, pattern);
		unsigned int pattern_length = GetPatternData(index).length;

		if (octets_length < pattern_length)
			continue;

		// if needed, check for arbitrary amount of white spaces.
		if (pattern[0] == WS)
		{
			while (octet_index < octets_length)
			{
				char c = octets[octet_index];
				if (!op_isspace(c) || c == 0x0B) // vertical tabs (0x0B) not included.
				{
					break;
				}
				octet_index++;
			}

			if (octet_index == octets_length)
				continue;

			pattern_index++;
		}

		BOOL check_if_octets_terminate_with_space_or_bracket = FALSE;
		char last_octet = 0; // dummy value, not used if check_if_octets_terminate_with_space_or_bracket == FALSE
		if (pattern[pattern_length - 1] == SB)
		{
			last_octet = octets[pattern_length - 1 - pattern_index + octet_index];
			pattern_length--;
			check_if_octets_terminate_with_space_or_bracket = TRUE;
		}

		unsigned potential_octet_match_length = MIN(octets_length - octet_index, pattern_length - pattern_index);

		if (check_with_mask)
		{
			GetMask(index, mask);
			BOOL match = TRUE;
			for (unsigned i = 0; i < potential_octet_match_length && match; ++i)
				match = (octets[octet_index+i] & mask[pattern_index+i]) == pattern[pattern_index+i];
			if (!match)
				continue;
		}
		else if (op_memcmp(octets + octet_index, pattern + pattern_index, potential_octet_match_length) != 0)
			continue;

		if (check_if_octets_terminate_with_space_or_bracket && last_octet != 0x20 && last_octet != 0x3E)
			continue;

		found_at_index = index;
		break;
	}

	return OpStatus::OK;
}
コード例 #19
0
ファイル: RecorderDlg.cpp プロジェクト: takashi310/VVD_Viewer
void RecorderDlg::AutoKeyChanComb(int comb)
{
	VRenderFrame* vr_frame = (VRenderFrame*)m_frame;
	if (!vr_frame)
		return;
	if (!m_view)
	{
		if (vr_frame && vr_frame->GetView(0))
			m_view = vr_frame->GetView(0);
		else
			return;
	}

	DataManager* mgr = vr_frame->GetDataManager();
	if (!mgr)
		return;
	Interpolator *interpolator = vr_frame->GetInterpolator();
	if (!interpolator)
		return;

	wxString str = m_duration_text->GetValue();
	double duration;
	str.ToDouble(&duration);

	KeyCode keycode;
	FlKeyBoolean* flkeyB = 0;

	double t = interpolator->GetLastT();
	t = t<0.0?0.0:t;
	if (t>0.0) t += duration;

	int i;
	int numChan = m_view->GetAllVolumeNum();
	vector<bool> chan_mask;
	//initiate mask
	for (i=0; i<numChan; i++)
	{
		if (i < comb)
			chan_mask.push_back(true);
		else
			chan_mask.push_back(false);
	}

	do
	{
		interpolator->Begin(t);

		//for all volumes
		for (i=0; i<m_view->GetAllVolumeNum(); i++)
		{
			VolumeData* vd = m_view->GetAllVolumeData(i);
			keycode.l0 = 1;
			keycode.l0_name = m_view->GetName();
			keycode.l1 = 2;
			keycode.l1_name = vd->GetName();
			//display only
			keycode.l2 = 0;
			keycode.l2_name = "display";
			flkeyB = new FlKeyBoolean(keycode, chan_mask[i]);
			interpolator->AddKey(flkeyB);
		}

		interpolator->End();
		t += duration;
	} while (GetMask(chan_mask));

	m_keylist->Update();
}
コード例 #20
0
std::string VertexProgramDecompiler::GetVecMask()
{
	return GetMask(false);
}
コード例 #21
0
std::string VertexProgramDecompiler::GetScaMask()
{
	return GetMask(true);
}
コード例 #22
0
ファイル: mex_func.cpp プロジェクト: g4idrijs/inpaintBCT
void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
    Data data;
	mxArray *Im;
	int nof_dim;
    const int *elem_per_dim;
    int nargout;
    int i;
	
    
    // set default values
    SetDefaults(&data);
    
	// check number of input arguments
	if( (nrhs % 2 == 0) || (nrhs < 3 ) )
	{
		ErrorMessage(ERR_NARGIN);
        ClearMemory(&data);
		return;
	}
    
	// initialize that part of the data depending only on input image
    {
        if( !mxIsDouble(prhs[0]) ) // check if image is given as double
        {
            ErrorMessage(ERR_DOUBLE);
            ClearMemory(&data);
            return;
        }
        
        // get image dimensions
        nof_dim = mxGetNumberOfDimensions(prhs[0]);
        elem_per_dim = mxGetDimensions(prhs[0]);
        
        if( nof_dim > 3 )
        {
            ErrorMessage(ERR_DIM);
            ClearMemory(&data);
            return;
        }
        
        plhs[0] = mxDuplicateArray(prhs[0]); // output image
        Im = mxDuplicateArray(prhs[0]);      // smoothed image

        data.rows = elem_per_dim[0];
        data.cols = elem_per_dim[1];
        data.size = data.rows * data.cols;
        data.channels = 1;
        if( nof_dim == 3 )
            data.channels = elem_per_dim[2];
        
        data.Image = mxGetPr(plhs[0]);
        data.MImage = mxGetPr(Im); 
        
        data.Ihelp = (double *)AllocMem(sizeof(double) * data.channels);
        data.Tfield = (hItem *) AllocMem(sizeof(hItem) * data.size);
        data.Domain = (double *) AllocMem(sizeof(double) * data.size);
        data.MDomain = (double *) AllocMem(sizeof(double) * data.size);
        data.heap = (hItem **) AllocMem(sizeof(hItem *) * data.size);
        data.ordered_points = (double *) AllocMem(sizeof(double) * data.size *3);
        
        // number of output arguments
        if( nlhs <= 2 )
            nargout = nlhs;
        else
            nargout = 2;
    }
     
    
    // get and check arguments
    {
        char guidance_done = 0;
        char order_done = 0;
        char argname[100];
        int  len;
        int  err;
        
        for( i = 1 ; i < nrhs ; i = i+2 )
        {
            if( !mxIsChar( prhs[i] ) )
            {
                ErrorMessage(ERR_STRING);
                ClearMemory(&data);
                return;
            }
            else
            {
                len = mxGetN( prhs[i] );
                mxGetString( prhs[i], argname, len+1);
                
                //mexPrintf(" %s \n", argname);
                
                switch( argname[0] )
                {
                    case 'o': // orderD , orderT
                        {
                            if( !order_done )
                            {
                                if( !mxIsEmpty(prhs[i+1]) )
                                {
                                    if( argname[len-1] == 'D' )
                                    {
                                        err = GetMask( prhs[i+1], &data);
                                        data.ordergiven = 0;
                                    }
                                    else if( argname[len-1] == 'T' )
                                    {
                                        err = GetOrder( prhs[i+1], &data);
                                        data.ordergiven =1;
                                    }
                                    else
                                        err = ERR_UNKNOWN_ID;
                                }
                                else
                                    err = ERR_ARG_MISSING; 

                                order_done = 1;
                            }
                            break;
                        }
                                            
                    case 'g': // guidanceN , guidanceC , guidanceD
                        {
                            if( !guidance_done )
                            {
                                if( !mxIsEmpty(prhs[i+1]) )
                                {
                                    if( argname[len-1] == 'N' )
                                    {
                                        err = GetParam( prhs[i+1], &data, TYPE_N);
                                        data.guidance = 0;
                                    }
                                    else if( argname[len-1] == 'C' )
                                    {
                                        err = GetParam( prhs[i+1], &data, TYPE_C);
                                        data.guidance = 1;
                                    }
                                    else if( argname[len-1] == 'D' )
                                    {
                                        err = GetParam( prhs[i+1], &data, TYPE_D);
                                        data.guidance = 2;
                                    }
                                    else
                                        err = ERR_UNKNOWN_ID;
                                }
                                else
                                    err = ERR_ARG_MISSING;
                                
                                // guidance_done = 1;
                                if(data.GivenGuidanceT != NULL)
                                    data.guidance = 2;
                            }
                            break;
                        }
                        
                    default:
                        err = ERR_UNKNOWN_ID;
                        break;
                }
                    
                if( err )
                {
                    ErrorMessage(err);
                    ClearMemory(&data);
                    return;
                }
            }
        }
        
        if( !order_done ) // at least mask must be specified
        {
            ErrorMessage(ERR_NO_MASK_ORDER);
            ClearMemory(&data);
            return;
        }
    }
	
    
    if( data.guidance == 1)
        SetKernels(&data);
    
	InpaintImage(&data); 
    
    if(data.inpaint_undefined == 1)
    {
        mexPrintf("\n\n");
        mexPrintf("Error:\n");
        mexPrintf("Some inpainted image values are undefined !\n");
        mexPrintf("This happens if the order is not well-defined. \n");
        mexPrintf("You can find out the undefined pixels by: > ind = find( isnan(result) ) \n\n\n");
    }
        
        
    if( nargout == 2 )
    {
        double *p;
        int size;
        
        size = 3 * data.nof_points2inpaint;
        plhs[1] = mxCreateDoubleMatrix(3, data.nof_points2inpaint , mxREAL);
        p = mxGetPr(plhs[1]);
        
        for( i=0 ; i < size ; i++ )
            if( (i+1) % 3 != 0 )
                p[i] = data.ordered_points[i] + 1;
            else
                p[i] = data.ordered_points[i];
    }
    
    //CopyMask(&data);
    //CopyParam( &data );
    //CopyDirfield( &data );
    //CopyMImage( &data );
    //CopyTfield(&data);
    
    ClearMemory(&data);
	return;
}
コード例 #23
0
/*
==============
sdDeployMaskEditSession::UpdateProjection
==============
*/
void sdDeployMaskEditSession::UpdateProjection( const idVec3& position ) {
	if ( !decalMaterial ) {
		return;
	}

	if ( decalHandle == -1 ) {
		decalHandle = gameLocal.RegisterLoggedDecal( decalMaterial );
	}
	gameLocal.ResetLoggedDecal( decalHandle );

	gameDecalInfo_t* decalInfo = gameLocal.GetLoggedDecal( decalHandle );

	sdDeployMaskInstance* mask = GetMask( position );
	const sdHeightMapInstance* heightMap = GetHeightMap( position );

	if ( mask != NULL && mask->IsValid() && heightMap != NULL ) {
		sdDeployMask::extents_t extents;
		GetExtents( position, *mask, extents );

		float depth = 512.0f;

		int maxX, maxY;
		mask->GetDimensions( maxX, maxY );

		sdDeployMask::extents_t expandedExtents;

		expandedExtents.minx = Max( 0, extents.minx - 2 );
		expandedExtents.miny = Max( 0, extents.miny - 2 );

		expandedExtents.maxx = Min( maxX, extents.maxx + 2 );
		expandedExtents.maxy = Min( maxY, extents.maxy + 2 );

		idList< const idMaterial* > megaTextureMaterials;
		const idStrList& megaTextureMaterialNames = gameLocal.GetMapInfo().GetMegatextureMaterials();
		for ( int i = 0; i < megaTextureMaterialNames.Num(); i++ ) {
			megaTextureMaterials.Append( declHolder.FindMaterial( megaTextureMaterialNames[ i ] ) );
		}

		idFixedWinding winding;
		
		int spawnID = WORLD_SPAWN_ID;

		for ( int i = expandedExtents.minx; i <= expandedExtents.maxx; i++ ) {
			for ( int j = expandedExtents.miny; j <= expandedExtents.maxy; j++ ) {
				gameDecalInfo_t* info = decalInfo;
				if ( !info ) {
					continue;
				}

				sdDeployMask::extents_t localExtents;
				localExtents.minx = i;
				localExtents.maxx = i;
				localExtents.miny = j;
				localExtents.maxy = j;

				idBounds bounds;
				mask->GetBounds( localExtents, bounds, heightMap );

				idVec3 top = bounds.GetCenter();
				top[ 2 ] = bounds.GetMaxs()[ 2 ];				

				deployResult_t localResult = mask->IsValid( localExtents );

				idVec4 localColor;
				switch ( localResult ) {
					case DR_CLEAR:
						localColor = colorGreen;
						break;
					default:
					case DR_FAILED:
						localColor = colorDkRed;
						break;
				}

				if ( !( ( i >= extents.minx ) && ( i <= extents.maxx ) && ( j >= extents.miny ) && ( j <= extents.maxy ) ) ) {
					localColor.x *= 0.3f;
					localColor.y *= 0.3f;
					localColor.z *= 0.3f;
				}

				winding.Clear();
				winding += idVec5( idVec3( bounds.GetMins()[ 0 ], bounds.GetMins()[ 1 ], bounds.GetMins()[ 2 ] - depth ), idVec2( 0.0f, 0.0f ) );
				winding += idVec5( idVec3( bounds.GetMins()[ 0 ], bounds.GetMaxs()[ 1 ], bounds.GetMins()[ 2 ] - depth ), idVec2( 0.0f, 1.0f ) );
				winding += idVec5( idVec3( bounds.GetMaxs()[ 0 ], bounds.GetMaxs()[ 1 ], bounds.GetMins()[ 2 ] - depth ), idVec2( 1.0f, 1.0f ) );
				winding += idVec5( idVec3( bounds.GetMaxs()[ 0 ], bounds.GetMins()[ 1 ], bounds.GetMins()[ 2 ] - depth ), idVec2( 1.0f, 0.0f ) );

				gameRenderWorld->AddToProjectedDecal( winding, top + idVec3( 0, 0, 64.f + depth ), true, localColor, info->renderEntity.hModel, spawnID, megaTextureMaterials.Begin(), megaTextureMaterials.Num() );
			}
		}
	}
}
コード例 #24
0
ファイル: GLVertexProgram.cpp プロジェクト: ItzWarty/rpcs3
void GLVertexDecompilerThread::AddCode(bool is_sca, const std::string& pCode, bool src_mask, bool set_dst, bool set_cond)
{
	std::string code = pCode;
	if(d0.cond == 0) return;
	enum
	{
		lt = 0x1,
		eq = 0x2,
		gt = 0x4,
	};

	static const char* cond_string_table[(lt | gt | eq) + 1] =
	{
		"error",
		"lessThan",
		"equal",
		"lessThanEqual",
		"greaterThan",
		"notEqual",
		"greaterThanEqual",
		"error"
	};

	std::string cond;

	if((set_cond || d0.cond_test_enable) && d0.cond != (lt | gt | eq))
	{
		static const char f[4] = {'x', 'y', 'z', 'w'};

		std::string swizzle;
		swizzle += f[d0.mask_x];
		swizzle += f[d0.mask_y];
		swizzle += f[d0.mask_z];
		swizzle += f[d0.mask_w];

		swizzle = swizzle == "xyzw" ? "" : "." + swizzle;

		cond = fmt::Format("if(all(%s(rc%s, vec4(0.0)%s))) ", cond_string_table[d0.cond], swizzle.c_str(), swizzle.c_str());
	}

	std::string mask = GetMask(is_sca);
	std::string value = src_mask ? code + mask : code;

	if(is_sca && d0.vec_result)
	{
		value = "vec4(" + value + ")" + mask;
	}

	if(d0.staturate)
	{
		value = "clamp(" + value + ", 0.0, 1.0)";
	}

	if(set_dst)
	{
		std::string dest;
		if(d0.cond_update_enable_0)
		{
			dest = m_parr.AddParam(PARAM_NONE, "vec4", "rc", "vec4(0.0)") + mask;
		}
		else if(d3.dst == 5 || d3.dst == 6)
		{
			if(d3.vec_writemask_x)
			{
				dest = m_parr.AddParam(PARAM_OUT, "vec4", "fogc") + mask;
			}
			else
			{
				int num = d3.dst == 5 ? 0 : 3;

				//if(d3.vec_writemask_y) num += 0;
				if(d3.vec_writemask_z) num += 1;
				else if(d3.vec_writemask_w) num += 2;

				dest = fmt::Format(GetDST(is_sca) + "/*" + mask + "*/", num);
			}
		}
		else
		{
			dest = GetDST(is_sca) + mask;
		}

		code = cond + dest + " = " + value;
	}
	else
	{
		code = cond + value;
	}

	m_body.push_back(code + ";");
}
コード例 #25
0
ファイル: GLVertexProgram.cpp プロジェクト: 0179cool/rpcs3
std::string GLVertexDecompilerThread::GetScaMask()
{
	return GetMask(true);
}
コード例 #26
0
void GLFragmentDecompilerThread::AddCode(std::string code, bool append_mask)
{
	if(!src0.exec_if_eq && !src0.exec_if_gr && !src0.exec_if_lt) return;

	const std::string mask = GetMask();
	std::string cond;

	if(!src0.exec_if_gr || !src0.exec_if_lt || !src0.exec_if_eq)
	{
		static const char f[4] = {'x', 'y', 'z', 'w'};

		std::string swizzle;
		swizzle += f[src0.cond_swizzle_x];
		swizzle += f[src0.cond_swizzle_y];
		swizzle += f[src0.cond_swizzle_z];
		swizzle += f[src0.cond_swizzle_w];
		swizzle = swizzle == "xyzw" ? "" : "." + swizzle;

		if(src0.exec_if_gr && src0.exec_if_eq)
		{
			cond = "greaterThanEqual";
		}
		else if(src0.exec_if_lt && src0.exec_if_eq)
		{
			cond = "lessThanEqual";
		}
		else if(src0.exec_if_gr && src0.exec_if_lt)
		{
			cond = "notEqual";
		}
		else if(src0.exec_if_gr)
		{
			cond = "greaterThan";
		}
		else if(src0.exec_if_lt)
		{
			cond = "lessThan";
		}
		else //if(src0.exec_if_eq)
		{
			cond = "equal";
		}

		cond = "if(all(" + cond + "(" + AddCond(dst.no_dest) + swizzle + ", vec4(0.0)))) ";
	}

	if(src1.scale)
	{
		switch(src1.scale)
		{
		case 1: code = "(" + code + " * 2)"; break;
		case 2: code = "(" + code + " * 4)"; break;
		case 3: code = "(" + code + " * 8)"; break;
		case 5: code = "(" + code + " / 2)"; break;
		case 6: code = "(" + code + " / 4)"; break;
		case 7: code = "(" + code + " / 8)"; break;

		default:
			ConLog.Error("Bad scale: %d", fmt::by_value(src1.scale));
			Emu.Pause();
		break;
		}
	}

	if(dst.saturate)
	{
		code = "clamp(" + code + ", 0.0, 1.0)";
	}

	std::string dest;

	if(dst.no_dest)
	{
		if(dst.set_cond)
		{
			dest = m_parr.AddParam(PARAM_NONE , "vec4", std::string(dst.fp16 ? "hc" : "rc") + std::to_string(src0.cond_reg_index));
		}
	}
	else
	{
		dest = AddReg(dst.dest_reg, dst.fp16);
	}

	code = cond + (dest.length() ? dest + mask + " = " : "") + code + (append_mask ? mask : "");

	main += "\t" + code + ";\n";
}
コード例 #27
0
ファイル: OXMaskedEdit.cpp プロジェクト: killbug2004/WSProf
void COXMaskedEdit::SetMask(LPCTSTR pszMask)
{
	if(pszMask==NULL)
	{
		pszMask=_T("");
	}
	DeleteContents();
	
	CMaskData* pobjData=NULL;
	for(LPCTSTR pszInsertionPoint=pszMask; *pszInsertionPoint; pszInsertionPoint++)
	{
		TCHAR chNew=*pszInsertionPoint;
		pobjData=new CMaskData();
		m_listData.AddTail(pobjData);
		switch(chNew)
		{
		case chMaskPlaceholderDECIMALSEPARATOR  :
			pobjData->m_eType  =MaskDataTypeDECIMALSEPARATOR  ;
			pobjData->m_chValue=m_chIntlDecimal               ;
			break;
		case chMaskPlaceholderTHOUSANDSSEPARATOR:
			pobjData->m_eType  =MaskDataTypeTHOUSANDSSEPARATOR;
			pobjData->m_chValue=m_chIntlThousands             ;
			break;
		case chMaskPlaceholderTIMESEPARATOR     :
			pobjData->m_eType  =MaskDataTypeTIMESEPARATOR     ;
			pobjData->m_chValue=m_chIntlTime                  ;
			break;
		case chMaskPlaceholderDATESEPARATOR     :
			pobjData->m_eType  =MaskDataTypeDATESEPARATOR     ;
			pobjData->m_chValue=m_chIntlDate                  ;
			break;
		case chMaskPlaceholderDIGIT             :
			pobjData->m_eType  =MaskDataTypeDIGIT             ;
			pobjData->m_chValue=m_chPromptSymbol              ;
			break;
		case chMaskPlaceholderALPHANUMERIC      :
			pobjData->m_eType  =MaskDataTypeALPHANUMERIC      ;
			pobjData->m_chValue=m_chPromptSymbol              ;
			break;
		case chMaskPlaceholderALPHABETIC        :
			pobjData->m_eType  =MaskDataTypeALPHABETIC        ;
			pobjData->m_chValue=m_chPromptSymbol              ;
			break;
		case chMaskPlaceholderALPHABETICUPPER   :
			pobjData->m_eType  =MaskDataTypeALPHAETICUPPER    ;
			pobjData->m_chValue=m_chPromptSymbol              ;
			break;
		case chMaskPlaceholderALPHABETICLOWER   :
			pobjData->m_eType  =MaskDataTypeALPHAETICLOWER    ;
			pobjData->m_chValue=m_chPromptSymbol              ;
			break;
		case chMaskPlaceholderCHARACTER         :
			pobjData->m_eType  =MaskDataTypeCHARACTER         ;
			pobjData->m_chValue=m_chPromptSymbol              ;
			break;
		case chMaskPlaceholderLITERALESCAPE     :
			// It is the next character that is inserted. 
			pszInsertionPoint++;
			chNew=*pszInsertionPoint;
			if(chNew)
			{
				pobjData->m_eType  =MaskDataTypeLITERALESCAPE     ;
				pobjData->m_chValue=chNew                         ;
				break;
			}
			// If there is no character following the escape, 
			// just treat the escape as a literal so that the user 
			// will see the problem. 
		default:
			// Everything else is just a literal. 
			pobjData->m_eType  =MaskDataTypeLITERAL           ;
			pobjData->m_chValue=chNew                         ;
			break;
		}
	}
	ASSERT(GetMask()==pszMask);

	Update();

	if(::IsWindow(GetSafeHwnd()))
		SetModify(FALSE);
}
コード例 #28
0
// May Trigger GC if get is false, str, if not NULL, needs to be rooted prior to calling Add()
HRESULT CLR_RT_HeapBlock_XmlNameTable::Add( LPCSTR key, CLR_UINT32 length, CLR_RT_HeapBlock_String*& str, bool get )
{
    TINYCLR_HEADER();

    CLR_RT_HeapBlock_XmlNameTable_Entry* entry;
    CLR_RT_HeapBlock_String*             match;

    CLR_INT32  hashCode;
    CLR_UINT32 i;

    if(length == 0)
    {
        // if length is 0, return String.Empty
        str = CLR_RT_HeapBlock_String::GetStringEmpty();
        TINYCLR_SET_AND_LEAVE(S_OK);
    }

    // Calculating the hash code
    hashCode = length + GetRandomizer();

    for(i = 0; i < length; i++)
    {
        hashCode += (hashCode << 7) ^ key[ i ];
    }

    hashCode -= hashCode >> 17;
    hashCode -= hashCode >> 11;
    hashCode -= hashCode >> 5;

    // Retrieve the entry (or entries) that hash to that bucket
    entry = (CLR_RT_HeapBlock_XmlNameTable_Entry*)(((CLR_RT_HeapBlock*)GetEntries()->GetElement( hashCode & GetMask() ))->Dereference());

    // Go through all the entries in the singly linked list to make sure there's no match
    while(entry != NULL)
    {
        if(entry->GetHashCode() == hashCode)
        {
            match = entry->GetStr();
            if((hal_strncmp_s( match->StringText(), key, length ) == 0) && (match->StringText()[ length ] == '\0'))
            {
                // if we find a match, we return the matched string
                str = match;
                TINYCLR_SET_AND_LEAVE(S_OK);
            }
        }

        entry = entry->GetNext();
    }

    if(get)
    {
        // we're only getting, so return null if no string is found
        str = NULL;
        TINYCLR_SET_AND_LEAVE(S_OK);
    }
    else
    {
        // we'll re-use the String object if we were given one, if not, we'll create it here
        if(str == NULL)
        {
            CLR_RT_HeapBlock strHB;
            
            TINYCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( strHB, key, length ));
            
            str = strHB.DereferenceString();

            // Attach the new string to the managed handle to prevent it from being GC when we allocate the Entry object in AddEntry()
            SetTmp( str );
        }

        TINYCLR_SET_AND_LEAVE(AddEntry( str, hashCode ));
    }

    TINYCLR_NOCLEANUP();
}
コード例 #29
0
ファイル: bitmap.cpp プロジェクト: gitrider/wxsj2
wxBitmap wxBitmap::Rescale( int clipx, int clipy, int clipwidth, int clipheight, int newx, int newy )
{
    wxCHECK_MSG( Ok(), wxNullBitmap, wxT("invalid bitmap") );

    if (newy==M_BMPDATA->m_width && newy==M_BMPDATA->m_height)
        return *this;
    
    int width = wxMax(newx, 1);
    int height = wxMax(newy, 1);
    width = wxMin(width, clipwidth);
    height = wxMin(height, clipheight);
        
    wxBitmap bmp;

#ifdef __WXGTK20__
    if (HasPixbuf())
    {
        bmp.SetWidth(width);
        bmp.SetHeight(height);
        bmp.SetDepth(GetDepth());
        bmp.SetPixbuf(gdk_pixbuf_new(GDK_COLORSPACE_RGB,
                                     gdk_pixbuf_get_has_alpha(GetPixbuf()),
                                     8, width, height));
        gdk_pixbuf_scale(GetPixbuf(), bmp.GetPixbuf(),
                         0, 0, width, height,
                         clipx, clipy, 
                         (double)newx/GetWidth(), (double)newy/GetHeight(),
                         GDK_INTERP_BILINEAR);
    }
    else
#endif // __WXGTK20__
    {
        GdkImage *img = (GdkImage*) NULL;
        if (GetPixmap())
            img = gdk_image_get( GetPixmap(), 0, 0, GetWidth(), GetHeight() );
        else if (GetBitmap())
            img = gdk_image_get( GetBitmap(), 0, 0, GetWidth(), GetHeight() );
        else
            wxFAIL_MSG( wxT("Ill-formed bitmap") );

        wxCHECK_MSG( img, wxNullBitmap, wxT("couldn't create image") );

        int bpp = -1;

        
        GdkGC *gc = NULL;
        GdkPixmap *dstpix = NULL;
        if (GetPixmap())
        {
            GdkVisual *visual = gdk_window_get_visual( GetPixmap() );
            if (visual == NULL)
                visual = wxTheApp->GetGdkVisual();

            bpp = visual->depth;
            bmp = wxBitmap(width,height,bpp);
            dstpix = bmp.GetPixmap();
            gc = gdk_gc_new( dstpix );
        }

        char *dst = NULL;
        long dstbyteperline = 0;
        
        if (GetBitmap())
        {
            bpp = 1;
            dstbyteperline = width/8*M_BMPDATA->m_bpp;
            if (width*M_BMPDATA->m_bpp % 8 != 0)
                dstbyteperline++;
            dst = (char*) malloc(dstbyteperline*height);
        }
                 
        // be careful to use the right scaling factor
        float scx = (float)M_BMPDATA->m_width/(float)newx;
        float scy = (float)M_BMPDATA->m_height/(float)newy;
        // prepare accel-tables
        int *tablex = (int *)calloc(width,sizeof(int));
        int *tabley = (int *)calloc(height,sizeof(int));

        // accel table filled with clipped values
        for (int x = 0; x < width; x++)
            tablex[x] = (int) (scx * (x+clipx));
        for (int y = 0; y < height; y++)
            tabley[y] = (int) (scy * (y+clipy));

        // Main rescaling routine starts here
        for (int h = 0; h < height; h++)
        {
            char outbyte = 0;
            int old_x = -1;
            guint32 old_pixval = 0;

            for (int w = 0; w < width; w++)
            {
                guint32 pixval;
                int x = tablex[w];
                if (x == old_x)
                    pixval = old_pixval;
                else
                {
                    pixval = gdk_image_get_pixel( img, x, tabley[h] );
                    old_pixval = pixval;
                    old_x = x;
                }
                    
                if (bpp == 1)
                {
                    if (!pixval)
                    {
                        char bit=1;
                        char shift = bit << w % 8;
                        outbyte |= shift;
                    }
                    
                    if ((w+1)%8==0)
                    {
                        dst[h*dstbyteperline+w/8] = outbyte;
                        outbyte = 0;
                    }
                }
                else
                {
                    GdkColor col;
                    col.pixel = pixval;
                    gdk_gc_set_foreground( gc, &col );
                    gdk_draw_point( dstpix, gc, w, h);
                }
            }
        
            // do not forget the last byte
            if ((bpp == 1) && (width % 8 != 0))
                dst[h*dstbyteperline+width/8] = outbyte;
        }
        
        gdk_image_destroy( img );
        if (gc) gdk_gc_unref( gc );

        if (bpp == 1)
        {
            bmp = wxBitmap( (const char *)dst, width, height, 1 );
            free( dst );
        }
        
        if (GetMask())
        {
            dstbyteperline = width/8;
            if (width % 8 != 0)
                dstbyteperline++;
            dst = (char*) malloc(dstbyteperline*height);
            img = gdk_image_get( GetMask()->GetBitmap(), 0, 0, GetWidth(), GetHeight() );

            for (int h = 0; h < height; h++)
            {
                char outbyte = 0;
                int old_x = -1;
                guint32 old_pixval = 0;
        
                for (int w = 0; w < width; w++)
                {
                    guint32 pixval;
                    int x = tablex[w];
                    if (x == old_x)
                        pixval = old_pixval;
                    else
                    {
                        pixval = gdk_image_get_pixel( img, x, tabley[h] );
                        old_pixval = pixval;
                        old_x = x;
                    }
                    
                    if (pixval)
                    {
                        char bit=1;
                        char shift = bit << w % 8;
                        outbyte |= shift;
                    }
                    
                    if ((w+1)%8 == 0)
                    {
                        dst[h*dstbyteperline+w/8] = outbyte;
                        outbyte = 0;
                    }
                }
            
                // do not forget the last byte
                if (width % 8 != 0)
                    dst[h*dstbyteperline+width/8] = outbyte;
            }
            wxMask* mask = new wxMask;
            mask->m_bitmap = gdk_bitmap_create_from_data( wxGetRootWindow()->window, (gchar *) dst, width, height );
            bmp.SetMask(mask);

            free( dst );
            gdk_image_destroy( img );
        }

        free( tablex );
        free( tabley );
    }
    
    return bmp; 
}
コード例 #30
0
ファイル: GLVertexProgram.cpp プロジェクト: 0179cool/rpcs3
std::string GLVertexDecompilerThread::GetVecMask()
{
	return GetMask(false);
}