[ create a new paste ] login | about

Link: http://codepad.org/Rwknv7JF    [ raw code | fork ]

almostautomated - C++, pasted on Apr 4:
//  Returns the marker symbol id for markerNum in the target view.
int MARKERSYMBOL(int markerNumber, unsigned int targetView)
{
	if ( (markerNumber > npp_plugin::markers::NB_MAX_PLUGINMARKERS) || (markerNumber < 0) ||
		(targetView > SUB_VIEW) ) return -1;

	//  Make the protected ViewStyle public to allow access to the marker array.
	class MarkerAccessor : public Editor {
	public:
		using Editor::vs;
	};

	MarkerAccessor* ma = reinterpret_cast<MarkerAccessor *>(::GetWindowLongPtr( npp_plugin::hViewByInt( targetView ), 0));

	int markType = -1;
	LineMarker* lm = &ma->vs.markers[markerNumber];	//  Mark to test.
	LineMarker em;							//  Empty mark to test against.

	markType = lm->markType;

	//  Test if the marker is still at default values.
	if ( ( em.markType == lm->markType ) &&
			( em.alpha == lm->alpha ) &&
			( em.fore.allocated.AsLong() == lm->fore.allocated.AsLong() ) &&
			( em.back.allocated.AsLong() == lm->back.allocated.AsLong() ) ) {
		markType = npp_plugin::markers::SC_MARK_AVAILABLE;
	}

	return ( markType );
}

//  Reset a marker definition back to default values, and delete marker from margin.
void MARKERUNDEFINE( int markerNumber, unsigned int targetView)
{
	if ( (markerNumber > npp_plugin::markers::NB_MAX_PLUGINMARKERS) || (markerNumber < 0) ||
		(targetView > SUB_VIEW) ) return;

	HWND hView = npp_plugin::hViewByInt( targetView );
	LineMarker em;							//  Empty mark to copy from.

	//  Remove existing marker in margin
	::SendMessage( hView, SCI_MARKERDELETEALL, markerNumber, 0 );

	//  Since PIXMAP definitions are sent as pointers to Scintilla the calling plugin is
	//  reponsible to clear thos.
	::SendMessage( hView, SCI_MARKERDEFINE, markerNumber, em.markType );
	::SendMessage( hView, SCI_MARKERSETFORE, markerNumber, em.fore.allocated.AsLong() );
	::SendMessage( hView, SCI_MARKERSETBACK, markerNumber, em.back.allocated.AsLong() );
	::SendMessage( hView, SCI_MARKERSETALPHA, markerNumber, em.alpha );
}


Create a new paste based on this one


Comments: