/** * MosaicControlNetTool constructor * * @param parent */ MosaicControlNetTool::MosaicControlNetTool(MosaicSceneWidget *scene) : MosaicTool(scene) { m_controlNet = NULL; m_controlNetGraphics = NULL; m_loadControlNetButton = NULL; m_displayControlNetButton = NULL; m_displayConnectivity = NULL; m_closeNetwork = NULL; m_controlNetFileLabel = NULL; m_randomizeColors = NULL; m_movementArrowColorSource = NoMovement; m_measureCount = 10; m_residualMagnitude = 5.0; // Create the action buttons m_displayControlNetButton = new QPushButton("Display"); m_displayControlNetButton->setCheckable(true); m_displayControlNetButton->setEnabled(false); m_displayControlNetButton->setToolTip("Toggle the visibility of the " "control points and movement arrows in the network."); connect(m_displayControlNetButton, SIGNAL(clicked()), this, SLOT(displayControlNet())); connect(m_displayControlNetButton, SIGNAL(destroyed(QObject *)), this, SLOT(objectDestroyed(QObject *))); m_displayConnectivity = new QPushButton("Color Islands"); m_displayConnectivity->setToolTip("Color cubes the same if the control " "network has a connection between them"); connect(m_displayConnectivity, SIGNAL(clicked()), this, SLOT(displayConnectivity())); connect(m_displayConnectivity, SIGNAL(destroyed(QObject *)), this, SLOT(objectDestroyed(QObject *))); m_displayConnectivity->setEnabled(false); m_randomizeColors = new QPushButton("Color Images"); m_randomizeColors->setToolTip("Color all cubes differently"); connect(m_randomizeColors, SIGNAL(clicked()), this, SLOT(randomizeColors())); connect(m_randomizeColors, SIGNAL(destroyed(QObject *)), this, SLOT(objectDestroyed(QObject *))); m_configMovement = new QPushButton(tr("Configure Movement Display")); m_configMovement->setToolTip(tr("Show arrow from the apriori surface point to " "the adjusted surface point for each control point with this " "information")); connect(m_configMovement, SIGNAL(clicked()), this, SLOT(configMovement())); connect(m_configMovement, SIGNAL(destroyed(QObject *)), this, SLOT(objectDestroyed(QObject *))); m_closeNetwork = new QPushButton("Close Network"); m_closeNetwork->setEnabled(false); m_closeNetwork->setVisible(false); m_closeNetwork->setToolTip("Close the currently open control network"); connect(m_closeNetwork, SIGNAL(clicked()), this, SLOT(closeNetwork())); connect(m_closeNetwork, SIGNAL(destroyed(QObject *)), this, SLOT(objectDestroyed(QObject *))); m_loadControlNetButton = new QPushButton("Open Network"); m_loadControlNetButton->setToolTip("Open and load a control network"); connect(m_loadControlNetButton, SIGNAL(clicked()), this, SLOT(openControlNet())); connect(m_loadControlNetButton, SIGNAL(destroyed(QObject *)), this, SLOT(objectDestroyed(QObject *))); m_controlNetFileLabel = new QLabel; m_controlNetFileLabel->setToolTip("The filename of the currently open " "control network"); connect(m_controlNetFileLabel, SIGNAL(destroyed(QObject *)), this, SLOT(objectDestroyed(QObject *))); }
QgsUniqueValueDialog::QgsUniqueValueDialog( QgsVectorLayer* vl ): QDialog(), mVectorLayer( vl ), sydialog( vl, true ) { setupUi( this ); setOrientation( Qt::Vertical ); //find out the fields of mVectorLayer if ( mVectorLayer ) { //we cannot use unique values for not-commited fields because QgsVectorLayer has no 'unique values' method... QgsVectorDataProvider* provider = mVectorLayer->dataProvider(); if ( provider ) { const QgsFieldMap & fields = provider->fields(); QString str; for ( QgsFieldMap::const_iterator it = fields.begin(); it != fields.end(); ++it ) { str = ( *it ).name(); str = mVectorLayer->attributeDisplayName( it.key() ); mClassificationComboBox->addItem( str, it.key() ); } } } mClassListWidget->setSelectionMode( QAbstractItemView::ExtendedSelection ); mClassListWidget->setEditTriggers( QAbstractItemView::DoubleClicked | QAbstractItemView::EditKeyPressed | QAbstractItemView::AnyKeyPressed ); mClassListWidget->setSortingEnabled( true ); if ( mVectorLayer ) { const QgsUniqueValueRenderer* renderer = dynamic_cast<const QgsUniqueValueRenderer *>( mVectorLayer->renderer() ); if ( renderer ) { mClassListWidget->clear(); QString field = mVectorLayer->attributeDisplayName( renderer->classificationField() ); mOldClassificationAttribute = field; mClassificationComboBox->setCurrentIndex( mClassificationComboBox->findText( field ) ); const QList<QgsSymbol*> list = renderer->symbols(); //fill the items of the renderer into mValues for ( QList<QgsSymbol*>::const_iterator iter = list.begin(); iter != list.end(); ++iter ) { QgsSymbol* symbol = *iter; QString symbolvalue = symbol->lowerValue(); QgsSymbol* sym = new QgsSymbol( mVectorLayer->geometryType(), symbol->lowerValue(), symbol->upperValue(), symbol->label() ); sym->setPen( symbol->pen() ); sym->setCustomTexture( symbol->customTexture() ); sym->setBrush( symbol->brush() ); sym->setNamedPointSymbol( symbol->pointSymbolName() ); sym->setPointSize( symbol->pointSize() ); sym->setPointSizeUnits( symbol->pointSizeUnits() ); sym->setScaleClassificationField( symbol->scaleClassificationField() ); sym->setRotationClassificationField( symbol->rotationClassificationField() ); mValues.insert( symbolvalue, sym ); QListWidgetItem *item = new QListWidgetItem( symbolvalue ); mClassListWidget->addItem( item ); updateEntryIcon( symbol, item ); item->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled ); item->setData( Qt::UserRole, symbol->lowerValue() ); item->setToolTip( symbol->label() ); } } } mDeletePushButton->setEnabled( false ); connect( mClassifyButton, SIGNAL( clicked() ), this, SLOT( changeClassificationAttribute() ) ); connect( mAddButton, SIGNAL( clicked() ), this, SLOT( addClass() ) ); connect( mDeletePushButton, SIGNAL( clicked() ), this, SLOT( deleteSelectedClasses() ) ); connect( mRandomizeColors, SIGNAL( clicked() ), this, SLOT( randomizeColors() ) ); connect( mResetColors, SIGNAL( clicked() ), this, SLOT( resetColors() ) ); connect( mClassListWidget, SIGNAL( itemSelectionChanged() ), this, SLOT( selectionChanged() ) ); connect( mCommonPropertyLock, SIGNAL( clicked() ), this, SLOT( selectionChanged() ) ); connect( mClassListWidget, SIGNAL( itemChanged( QListWidgetItem * ) ), this, SLOT( itemChanged( QListWidgetItem * ) ) ); connect( &sydialog, SIGNAL( settingsChanged() ), this, SLOT( applySymbologyChanges() ) ); mSymbolWidgetStack->addWidget( &sydialog ); mSymbolWidgetStack->setCurrentWidget( &sydialog ); }
//Program entry point int SDL_main(int argc, char* argv[]) { int i; SDL_Event event; //Used for handling input events, as you can see later on. SDL_Surface *screen; //http://www.libsdl.org/cgi/docwiki.cgi/SDL_Surface CAMERA_POSITION camera; float *colors[3] = {&RED[0], &GREEN[0], &BLUE[0]}; for (i = 0; i < 256; i++) { keys_down[i] = 0; } resetCamera(&camera); //The following is pretty self-explanatory if(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER) != 0) { printf("Unable to initialize SDL: %s\n", SDL_GetError()); return 1; } //You can of course customize this. SDL_WM_SetCaption("Perspective Projection", "Perspective Projection"); //We need to explicitly enable double buffering SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); //Initialize window, setting the resolution to 1024x768 @ 32 bits per pixel. We want an OpenGL window. screen = SDL_SetVideoMode(1024, 768, 32, SDL_OPENGL); if(!screen) { printf("Unable to set video mode: %s\n", SDL_GetError()); return 1; } //Any other one-time initialization would typically go here. //"Renderer" initialization r_init(&camera); //This is what is referred to as the "game loop." Obviously there is not much here currently. while(!user_exit) { bool mouseMoved = FALSE; int x = 0, y = 0; //Handle input while(SDL_PollEvent(&event)) { switch(event.type) { case SDL_KEYDOWN: input_keyDown(event.key.keysym.sym, &camera); break; case SDL_KEYUP: input_keyUp(event.key.keysym.sym); break; case SDL_MOUSEBUTTONDOWN: randomizeColors(colors); break; case SDL_MOUSEMOTION: x = event.motion.x; y = event.motion.y; mouseMoved = TRUE; break; case SDL_QUIT: exit(0); } } input_update(&camera); if (mouseMoved) { input_mouseMoved(&camera, x, y); setUpAndLoadModelViewMatrix(&camera); } //Here is where you will do any OpenGL drawing. You would also do things like update moving objects, etc. //Do whatever we need to do to draw a single image. r_drawFrame(colors); } //Shut down SDL SDL_Quit(); //Everything went OK. return 0; }