SlideShare una empresa de Scribd logo
1 de 26
Descargar para leer sin conexión
Code Less, Find more oil
Qt in Use at Midland Valley
Introduction

• What Midland Valley does

• Deploying Qt

• Qt as our users see it

• Qt as our developers see it



  writing better software - writing software better


                                                      1
Qt used for finding Oil & Gold




                                 Delft University of Technology




                                                                  2
Qt used for finding Oil & Gold



• Oil & Gas E & P
   – 2D Line Restoration &
     validation




                                 3
Qt used for finding Oil & Gold



• Oil & Gas E & P
   – Full 3D structural modelling
      • basin modelling

      • fracture modelling

      • sediment modelling




                                    4
Qt used for finding Oil & Gold



• Minerals




                                 5
Qt used for finding Oil & Gold



• Carbon Capture & Storage




                                 6
Qt used for finding Oil &
Gold
• Radioactive Waste Disposal




                               7
Qt used for finding Oil &
Gold
• Geological Surveys and Government Institutes




                                                 8
Qt used for finding Oil & Gold



• University Teaching
  and Research




                                 9
Qt used for finding Oil & Gold




                                 10
Life BQ (Before Qt)

• Multi-platform environment

• 2DMove
  – Win32/MFC

  – Linux/SunOS/Irix through Mainwin

• 3DMove
  – Unix Motif
Introducing Qt in MVE

• 4DMove, using Qt from day one

• Windows and Linux

• Easy to use UI & Workflows

• 3D View using Coin/SoQt




                                  12
It’s all Qt now

• All products ported to Qt
  – 3DMove in 2007,

  – 2DMove in 2008

• All products released as
  one, using launcher

• Windows and Linux, 32 and 64 bits

• One common toolkit, one common code base

                                             13
Model / Views




                14
Graphics - 1

• Painter, plots

• Screen shots here




                      15
Graphics - 2

• QGraphicsView

• Screen shot here




                     16
Graphics – 3(D)

• Coin, SoQt, Quarter

• Screen shot here




                        17
WebKit and Google Maps




                         18
Writing Better Software

• Rich set of widgets

• Designer

• Support libraries!
   – WebKit, QtConcurrent,
    QOpenGL, Network,
    XML, Help...

• Qt makes hard things easy


                              19
C++ and JavaScript talk WebKit

• Send objects from C++ to JavaScript
  webpage->mainFrame()->addToJavaScriptWindowObject("mapController", controller );
  webpage->mainFrame()->addToJavaScriptWindowObject("mapController", controller );

  void renderInWebPage(QObject* object, double lat, double lng)
  void renderInWebPage(QObject* object, double lat, double lng)
  {
  {
    object->setProperty("name", QVariant("name"));
    object->setProperty("name", QVariant("name"));
    object->setProperty("lat", QVariant(lat));
    object->setProperty("lat", QVariant(lat));
    object->setProperty("long", QVariant(lng));
    object->setProperty("long", QVariant(lng));
    webpage->mainFrame()->addToJavaScriptWindowObject("myObject", object );
    webpage->mainFrame()->addToJavaScriptWindowObject("myObject", object );
    webpage->mainFrame()->evaluateJavaScript("renderObject(myObject);"));
    webpage->mainFrame()->evaluateJavaScript("renderObject(myObject);"));
  }
  }


• Use objects in JavaScript and call back C++
  void renderObject(object)
  void renderObject(object)
  {
  {
    var ov = new GMarker(new GLatLng(geo.lat, geo.long));
    var ov = new GMarker(new GLatLng(geo.lat, geo.long));
    var infoHtml = geo.description ? geo.description : geo.name;
    var infoHtml = geo.description ? geo.description : geo.name;
    map.addOverlay(ov);
    map.addOverlay(ov);
    ov.bindInfoWindowHtml(infoHtml);
    ov.bindInfoWindowHtml(infoHtml);
    var el = GEvent.addListener(ov, "click", function() {
    var el = GEvent.addListener(ov, "click", function() {
            if(mapController) mapController.geoClick(geo.id);
            if(mapController) mapController.geoClick(geo.id);
    });
    });
  }
  }




                                                                                     20
QtConcurrent
• Old Single Threaded
  // now unfold the passive beds
  // now unfold the passive beds
  for(int i=0; i<_passiveBedSize; i++)
  for(int i=0; i<_passiveBedSize; i++)
  {
  {
       restorePassiveBed(_toRestore[i], _passiveObjects[i],
       restorePassiveBed(_toRestore[i], _passiveObjects[i],
                                refPlaneNormal, refPlane, forward);
                                 refPlaneNormal, refPlane, forward);
  }
  }



• New Fast Parallel
  QFutureSynchronizer<void> synchronizer;
  QFutureSynchronizer<void> synchronizer;

  // now unfold the passive beds
  // now unfold the passive beds
  for(int i=0; i<_passiveBedSize; i++)
  for(int i=0; i<_passiveBedSize; i++)
  {
  {
       QFuture<bool> future = QtConcurrent::run(this,
       QFuture<bool> future = QtConcurrent::run(this,
            &mveFlexuralUnfolder::restorePassiveBed, _toRestore[i], _passiveObjects[i],
            &mveFlexuralUnfolder::restorePassiveBed, _toRestore[i], _passiveObjects[i],
            refPlaneNormal, refPlane, forward);
            refPlaneNormal, refPlane, forward);
       synchronizer.addFuture(future);
       synchronizer.addFuture(future);
  }
  }

  synchronizer.waitForFinished();
  synchronizer.waitForFinished();




                                                                                          21
Writing Software Better

• Several platforms, One code

• Build system, devenv integration

• Reusable UI
   – Custom widgets

   – Designer Plugins

• Unit testing

• Trolltech/Nokia support

                                     22
Custom Widgets & Designer
Plugin




                            23
Unit Testing

• UI for unit testing

• Selective test
  execution




                        24
Conclusion

• Better software
   – Rich UI, integrate with modern technology

   – Improve workflows and provide richer functionnality

• Better tool
   – Streamline development cycle

   – Improve stability and quality




                                                           25

Más contenido relacionado

La actualidad más candente

Untitled presentation(4)
Untitled presentation(4)Untitled presentation(4)
Untitled presentation(4)chan20kaur
 
Qt Graphics View Framework (Qt Developers Meetup Isreal)
Qt Graphics View Framework (Qt Developers Meetup Isreal)Qt Graphics View Framework (Qt Developers Meetup Isreal)
Qt Graphics View Framework (Qt Developers Meetup Isreal)vitalipe
 
Copy Your Favourite Nokia App with Qt
Copy Your Favourite Nokia App with QtCopy Your Favourite Nokia App with Qt
Copy Your Favourite Nokia App with Qtaccount inactive
 
State of the Art OpenGL and Qt
State of the Art OpenGL and QtState of the Art OpenGL and Qt
State of the Art OpenGL and QtICS
 
Petri Niemi Qt Advanced Part 1
Petri Niemi Qt Advanced Part 1Petri Niemi Qt Advanced Part 1
Petri Niemi Qt Advanced Part 1NokiaAppForum
 
Meet the Widgets: Another Way to Implement UI
Meet the Widgets: Another Way to Implement UIMeet the Widgets: Another Way to Implement UI
Meet the Widgets: Another Way to Implement UIICS
 
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with QtConvert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with QtICS
 
Qt for beginners part 2 widgets
Qt for beginners part 2   widgetsQt for beginners part 2   widgets
Qt for beginners part 2 widgetsICS
 
Special Effects with Qt Graphics View
Special Effects with Qt Graphics ViewSpecial Effects with Qt Graphics View
Special Effects with Qt Graphics Viewaccount inactive
 
Qt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt QuickQt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt QuickICS
 
The Next Generation Qt Item Views
The Next Generation Qt Item ViewsThe Next Generation Qt Item Views
The Next Generation Qt Item Viewsaccount inactive
 
Petri Niemi Qt Advanced Part 2
Petri Niemi Qt Advanced Part 2Petri Niemi Qt Advanced Part 2
Petri Niemi Qt Advanced Part 2NokiaAppForum
 
Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7Pasi Kellokoski
 
Qt State Machine Framework
Qt State Machine FrameworkQt State Machine Framework
Qt State Machine Frameworkaccount inactive
 
The Ring programming language version 1.10 book - Part 114 of 212
The Ring programming language version 1.10 book - Part 114 of 212The Ring programming language version 1.10 book - Part 114 of 212
The Ring programming language version 1.10 book - Part 114 of 212Mahmoud Samir Fayed
 
The Ring programming language version 1.6 book - Part 176 of 189
The Ring programming language version 1.6 book - Part 176 of 189The Ring programming language version 1.6 book - Part 176 of 189
The Ring programming language version 1.6 book - Part 176 of 189Mahmoud Samir Fayed
 
Efficient Graphics with Qt
Efficient Graphics with QtEfficient Graphics with Qt
Efficient Graphics with QtAriya Hidayat
 
Lockless Producer Consumer Threads: Asynchronous Communications Made Easy
Lockless Producer Consumer Threads: Asynchronous Communications Made EasyLockless Producer Consumer Threads: Asynchronous Communications Made Easy
Lockless Producer Consumer Threads: Asynchronous Communications Made EasyICS
 
Using Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with QtUsing Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with Qtaccount inactive
 
Advanced Scenegraph Rendering Pipeline
Advanced Scenegraph Rendering PipelineAdvanced Scenegraph Rendering Pipeline
Advanced Scenegraph Rendering PipelineNarann29
 

La actualidad más candente (20)

Untitled presentation(4)
Untitled presentation(4)Untitled presentation(4)
Untitled presentation(4)
 
Qt Graphics View Framework (Qt Developers Meetup Isreal)
Qt Graphics View Framework (Qt Developers Meetup Isreal)Qt Graphics View Framework (Qt Developers Meetup Isreal)
Qt Graphics View Framework (Qt Developers Meetup Isreal)
 
Copy Your Favourite Nokia App with Qt
Copy Your Favourite Nokia App with QtCopy Your Favourite Nokia App with Qt
Copy Your Favourite Nokia App with Qt
 
State of the Art OpenGL and Qt
State of the Art OpenGL and QtState of the Art OpenGL and Qt
State of the Art OpenGL and Qt
 
Petri Niemi Qt Advanced Part 1
Petri Niemi Qt Advanced Part 1Petri Niemi Qt Advanced Part 1
Petri Niemi Qt Advanced Part 1
 
Meet the Widgets: Another Way to Implement UI
Meet the Widgets: Another Way to Implement UIMeet the Widgets: Another Way to Implement UI
Meet the Widgets: Another Way to Implement UI
 
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with QtConvert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
 
Qt for beginners part 2 widgets
Qt for beginners part 2   widgetsQt for beginners part 2   widgets
Qt for beginners part 2 widgets
 
Special Effects with Qt Graphics View
Special Effects with Qt Graphics ViewSpecial Effects with Qt Graphics View
Special Effects with Qt Graphics View
 
Qt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt QuickQt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt Quick
 
The Next Generation Qt Item Views
The Next Generation Qt Item ViewsThe Next Generation Qt Item Views
The Next Generation Qt Item Views
 
Petri Niemi Qt Advanced Part 2
Petri Niemi Qt Advanced Part 2Petri Niemi Qt Advanced Part 2
Petri Niemi Qt Advanced Part 2
 
Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7
 
Qt State Machine Framework
Qt State Machine FrameworkQt State Machine Framework
Qt State Machine Framework
 
The Ring programming language version 1.10 book - Part 114 of 212
The Ring programming language version 1.10 book - Part 114 of 212The Ring programming language version 1.10 book - Part 114 of 212
The Ring programming language version 1.10 book - Part 114 of 212
 
The Ring programming language version 1.6 book - Part 176 of 189
The Ring programming language version 1.6 book - Part 176 of 189The Ring programming language version 1.6 book - Part 176 of 189
The Ring programming language version 1.6 book - Part 176 of 189
 
Efficient Graphics with Qt
Efficient Graphics with QtEfficient Graphics with Qt
Efficient Graphics with Qt
 
Lockless Producer Consumer Threads: Asynchronous Communications Made Easy
Lockless Producer Consumer Threads: Asynchronous Communications Made EasyLockless Producer Consumer Threads: Asynchronous Communications Made Easy
Lockless Producer Consumer Threads: Asynchronous Communications Made Easy
 
Using Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with QtUsing Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with Qt
 
Advanced Scenegraph Rendering Pipeline
Advanced Scenegraph Rendering PipelineAdvanced Scenegraph Rendering Pipeline
Advanced Scenegraph Rendering Pipeline
 

Similar a Advanced Visualization with OpenGL in Oil & Gas

Plasmaquick Workshop - FISL 13
Plasmaquick Workshop - FISL 13Plasmaquick Workshop - FISL 13
Plasmaquick Workshop - FISL 13Daker Fernandes
 
Optimizing Performance in Qt-Based Applications
Optimizing Performance in Qt-Based ApplicationsOptimizing Performance in Qt-Based Applications
Optimizing Performance in Qt-Based Applicationsaccount inactive
 
Qt for beginners part 1 overview and key concepts
Qt for beginners part 1   overview and key conceptsQt for beginners part 1   overview and key concepts
Qt for beginners part 1 overview and key conceptsICS
 
下午3 intel fenghaitao_mee_go api and application development
下午3 intel fenghaitao_mee_go api and application development下午3 intel fenghaitao_mee_go api and application development
下午3 intel fenghaitao_mee_go api and application developmentcsdnmobile
 
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud FoundryCloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud FoundryQAware GmbH
 
Intro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps WorkshopIntro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps WorkshopWeaveworks
 
Scripting Your Qt Application
Scripting Your Qt ApplicationScripting Your Qt Application
Scripting Your Qt Applicationaccount inactive
 
containerd the universal container runtime
containerd the universal container runtimecontainerd the universal container runtime
containerd the universal container runtimeDocker, Inc.
 
Kubernetes Problem-Solving
Kubernetes Problem-SolvingKubernetes Problem-Solving
Kubernetes Problem-SolvingAll Things Open
 
Best Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part IBest Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part IICS
 
Best Practices in Qt Quick/QML - Part 1 of 4
Best Practices in Qt Quick/QML - Part 1 of 4Best Practices in Qt Quick/QML - Part 1 of 4
Best Practices in Qt Quick/QML - Part 1 of 4ICS
 
06 - Qt Communication
06 - Qt Communication06 - Qt Communication
06 - Qt CommunicationAndreas Jakl
 
Qt Automotive Suite - under the hood // Qt World Summit 2017
Qt Automotive Suite - under the hood // Qt World Summit 2017Qt Automotive Suite - under the hood // Qt World Summit 2017
Qt Automotive Suite - under the hood // Qt World Summit 2017Johan Thelin
 

Similar a Advanced Visualization with OpenGL in Oil & Gas (20)

Qt Application Programming with C++ - Part 1
Qt Application Programming with C++ - Part 1Qt Application Programming with C++ - Part 1
Qt Application Programming with C++ - Part 1
 
Plasmaquick Workshop - FISL 13
Plasmaquick Workshop - FISL 13Plasmaquick Workshop - FISL 13
Plasmaquick Workshop - FISL 13
 
Optimizing Performance in Qt-Based Applications
Optimizing Performance in Qt-Based ApplicationsOptimizing Performance in Qt-Based Applications
Optimizing Performance in Qt-Based Applications
 
Qt programming-using-cpp
Qt programming-using-cppQt programming-using-cpp
Qt programming-using-cpp
 
Qt for beginners part 1 overview and key concepts
Qt for beginners part 1   overview and key conceptsQt for beginners part 1   overview and key concepts
Qt for beginners part 1 overview and key concepts
 
Qt Qml
Qt QmlQt Qml
Qt Qml
 
下午3 intel fenghaitao_mee_go api and application development
下午3 intel fenghaitao_mee_go api and application development下午3 intel fenghaitao_mee_go api and application development
下午3 intel fenghaitao_mee_go api and application development
 
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud FoundryCloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
 
Docker meetup-20-apr-17-openshit
Docker meetup-20-apr-17-openshitDocker meetup-20-apr-17-openshit
Docker meetup-20-apr-17-openshit
 
Qt coin3d soqt
Qt coin3d soqtQt coin3d soqt
Qt coin3d soqt
 
Intro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps WorkshopIntro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps Workshop
 
Scripting Your Qt Application
Scripting Your Qt ApplicationScripting Your Qt Application
Scripting Your Qt Application
 
containerd the universal container runtime
containerd the universal container runtimecontainerd the universal container runtime
containerd the universal container runtime
 
Kubernetes Problem-Solving
Kubernetes Problem-SolvingKubernetes Problem-Solving
Kubernetes Problem-Solving
 
QtQuick Day 1
QtQuick Day 1QtQuick Day 1
QtQuick Day 1
 
cpp-2013 #18 Qt Part 2
cpp-2013 #18 Qt Part 2cpp-2013 #18 Qt Part 2
cpp-2013 #18 Qt Part 2
 
Best Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part IBest Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part I
 
Best Practices in Qt Quick/QML - Part 1 of 4
Best Practices in Qt Quick/QML - Part 1 of 4Best Practices in Qt Quick/QML - Part 1 of 4
Best Practices in Qt Quick/QML - Part 1 of 4
 
06 - Qt Communication
06 - Qt Communication06 - Qt Communication
06 - Qt Communication
 
Qt Automotive Suite - under the hood // Qt World Summit 2017
Qt Automotive Suite - under the hood // Qt World Summit 2017Qt Automotive Suite - under the hood // Qt World Summit 2017
Qt Automotive Suite - under the hood // Qt World Summit 2017
 

Más de account inactive

KDE Plasma for Mobile Phones
KDE Plasma for Mobile PhonesKDE Plasma for Mobile Phones
KDE Plasma for Mobile Phonesaccount inactive
 
Shipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for SymbianShipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for Symbianaccount inactive
 
Developments in The Qt WebKit Integration
Developments in The Qt WebKit IntegrationDevelopments in The Qt WebKit Integration
Developments in The Qt WebKit Integrationaccount inactive
 
Qt on Real Time Operating Systems
Qt on Real Time Operating SystemsQt on Real Time Operating Systems
Qt on Real Time Operating Systemsaccount inactive
 
Development with Qt for Windows CE
Development with Qt for Windows CEDevelopment with Qt for Windows CE
Development with Qt for Windows CEaccount inactive
 
Translating Qt Applications
Translating Qt ApplicationsTranslating Qt Applications
Translating Qt Applicationsaccount inactive
 
Mobile Development with Qt for Symbian
Mobile Development with Qt for SymbianMobile Development with Qt for Symbian
Mobile Development with Qt for Symbianaccount inactive
 
How to Make Your Qt App Look Native
How to Make Your Qt App Look NativeHow to Make Your Qt App Look Native
How to Make Your Qt App Look Nativeaccount inactive
 
Animation Framework: A Step Towards Modern UIs
Animation Framework: A Step Towards Modern UIsAnimation Framework: A Step Towards Modern UIs
Animation Framework: A Step Towards Modern UIsaccount inactive
 
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)account inactive
 
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization SoftwareCase Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Softwareaccount inactive
 
Case Study: Porting Qt for Embedded Linux on Embedded Processors
Case Study: Porting Qt for Embedded Linux on Embedded ProcessorsCase Study: Porting Qt for Embedded Linux on Embedded Processors
Case Study: Porting Qt for Embedded Linux on Embedded Processorsaccount inactive
 
OGRE: Qt & OGRE for Multimedia Creation
OGRE: Qt & OGRE for Multimedia CreationOGRE: Qt & OGRE for Multimedia Creation
OGRE: Qt & OGRE for Multimedia Creationaccount inactive
 
HGZ Kaffeemaschinen & Qt Speak Coffee
HGZ Kaffeemaschinen & Qt Speak CoffeeHGZ Kaffeemaschinen & Qt Speak Coffee
HGZ Kaffeemaschinen & Qt Speak Coffeeaccount inactive
 

Más de account inactive (20)

Meet Qt
Meet QtMeet Qt
Meet Qt
 
KDE Plasma for Mobile Phones
KDE Plasma for Mobile PhonesKDE Plasma for Mobile Phones
KDE Plasma for Mobile Phones
 
Shipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for SymbianShipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for Symbian
 
The Future of Qt Widgets
The Future of Qt WidgetsThe Future of Qt Widgets
The Future of Qt Widgets
 
Developments in The Qt WebKit Integration
Developments in The Qt WebKit IntegrationDevelopments in The Qt WebKit Integration
Developments in The Qt WebKit Integration
 
Qt Kwan-Do
Qt Kwan-DoQt Kwan-Do
Qt Kwan-Do
 
Qt on Real Time Operating Systems
Qt on Real Time Operating SystemsQt on Real Time Operating Systems
Qt on Real Time Operating Systems
 
Development with Qt for Windows CE
Development with Qt for Windows CEDevelopment with Qt for Windows CE
Development with Qt for Windows CE
 
Translating Qt Applications
Translating Qt ApplicationsTranslating Qt Applications
Translating Qt Applications
 
Qt Creator Bootcamp
Qt Creator BootcampQt Creator Bootcamp
Qt Creator Bootcamp
 
Mobile Development with Qt for Symbian
Mobile Development with Qt for SymbianMobile Development with Qt for Symbian
Mobile Development with Qt for Symbian
 
How to Make Your Qt App Look Native
How to Make Your Qt App Look NativeHow to Make Your Qt App Look Native
How to Make Your Qt App Look Native
 
Animation Framework: A Step Towards Modern UIs
Animation Framework: A Step Towards Modern UIsAnimation Framework: A Step Towards Modern UIs
Animation Framework: A Step Towards Modern UIs
 
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
 
The Mobility Project
The Mobility ProjectThe Mobility Project
The Mobility Project
 
Qt Licensing Explained
Qt Licensing ExplainedQt Licensing Explained
Qt Licensing Explained
 
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization SoftwareCase Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
 
Case Study: Porting Qt for Embedded Linux on Embedded Processors
Case Study: Porting Qt for Embedded Linux on Embedded ProcessorsCase Study: Porting Qt for Embedded Linux on Embedded Processors
Case Study: Porting Qt for Embedded Linux on Embedded Processors
 
OGRE: Qt & OGRE for Multimedia Creation
OGRE: Qt & OGRE for Multimedia CreationOGRE: Qt & OGRE for Multimedia Creation
OGRE: Qt & OGRE for Multimedia Creation
 
HGZ Kaffeemaschinen & Qt Speak Coffee
HGZ Kaffeemaschinen & Qt Speak CoffeeHGZ Kaffeemaschinen & Qt Speak Coffee
HGZ Kaffeemaschinen & Qt Speak Coffee
 

Último

Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 

Último (20)

Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 

Advanced Visualization with OpenGL in Oil & Gas

  • 1. Code Less, Find more oil Qt in Use at Midland Valley
  • 2. Introduction • What Midland Valley does • Deploying Qt • Qt as our users see it • Qt as our developers see it writing better software - writing software better 1
  • 3. Qt used for finding Oil & Gold Delft University of Technology 2
  • 4. Qt used for finding Oil & Gold • Oil & Gas E & P – 2D Line Restoration & validation 3
  • 5. Qt used for finding Oil & Gold • Oil & Gas E & P – Full 3D structural modelling • basin modelling • fracture modelling • sediment modelling 4
  • 6. Qt used for finding Oil & Gold • Minerals 5
  • 7. Qt used for finding Oil & Gold • Carbon Capture & Storage 6
  • 8. Qt used for finding Oil & Gold • Radioactive Waste Disposal 7
  • 9. Qt used for finding Oil & Gold • Geological Surveys and Government Institutes 8
  • 10. Qt used for finding Oil & Gold • University Teaching and Research 9
  • 11. Qt used for finding Oil & Gold 10
  • 12. Life BQ (Before Qt) • Multi-platform environment • 2DMove – Win32/MFC – Linux/SunOS/Irix through Mainwin • 3DMove – Unix Motif
  • 13. Introducing Qt in MVE • 4DMove, using Qt from day one • Windows and Linux • Easy to use UI & Workflows • 3D View using Coin/SoQt 12
  • 14. It’s all Qt now • All products ported to Qt – 3DMove in 2007, – 2DMove in 2008 • All products released as one, using launcher • Windows and Linux, 32 and 64 bits • One common toolkit, one common code base 13
  • 16. Graphics - 1 • Painter, plots • Screen shots here 15
  • 17. Graphics - 2 • QGraphicsView • Screen shot here 16
  • 18. Graphics – 3(D) • Coin, SoQt, Quarter • Screen shot here 17
  • 19. WebKit and Google Maps 18
  • 20. Writing Better Software • Rich set of widgets • Designer • Support libraries! – WebKit, QtConcurrent, QOpenGL, Network, XML, Help... • Qt makes hard things easy 19
  • 21. C++ and JavaScript talk WebKit • Send objects from C++ to JavaScript webpage->mainFrame()->addToJavaScriptWindowObject("mapController", controller ); webpage->mainFrame()->addToJavaScriptWindowObject("mapController", controller ); void renderInWebPage(QObject* object, double lat, double lng) void renderInWebPage(QObject* object, double lat, double lng) { { object->setProperty("name", QVariant("name")); object->setProperty("name", QVariant("name")); object->setProperty("lat", QVariant(lat)); object->setProperty("lat", QVariant(lat)); object->setProperty("long", QVariant(lng)); object->setProperty("long", QVariant(lng)); webpage->mainFrame()->addToJavaScriptWindowObject("myObject", object ); webpage->mainFrame()->addToJavaScriptWindowObject("myObject", object ); webpage->mainFrame()->evaluateJavaScript("renderObject(myObject);")); webpage->mainFrame()->evaluateJavaScript("renderObject(myObject);")); } } • Use objects in JavaScript and call back C++ void renderObject(object) void renderObject(object) { { var ov = new GMarker(new GLatLng(geo.lat, geo.long)); var ov = new GMarker(new GLatLng(geo.lat, geo.long)); var infoHtml = geo.description ? geo.description : geo.name; var infoHtml = geo.description ? geo.description : geo.name; map.addOverlay(ov); map.addOverlay(ov); ov.bindInfoWindowHtml(infoHtml); ov.bindInfoWindowHtml(infoHtml); var el = GEvent.addListener(ov, "click", function() { var el = GEvent.addListener(ov, "click", function() { if(mapController) mapController.geoClick(geo.id); if(mapController) mapController.geoClick(geo.id); }); }); } } 20
  • 22. QtConcurrent • Old Single Threaded // now unfold the passive beds // now unfold the passive beds for(int i=0; i<_passiveBedSize; i++) for(int i=0; i<_passiveBedSize; i++) { { restorePassiveBed(_toRestore[i], _passiveObjects[i], restorePassiveBed(_toRestore[i], _passiveObjects[i], refPlaneNormal, refPlane, forward); refPlaneNormal, refPlane, forward); } } • New Fast Parallel QFutureSynchronizer<void> synchronizer; QFutureSynchronizer<void> synchronizer; // now unfold the passive beds // now unfold the passive beds for(int i=0; i<_passiveBedSize; i++) for(int i=0; i<_passiveBedSize; i++) { { QFuture<bool> future = QtConcurrent::run(this, QFuture<bool> future = QtConcurrent::run(this, &mveFlexuralUnfolder::restorePassiveBed, _toRestore[i], _passiveObjects[i], &mveFlexuralUnfolder::restorePassiveBed, _toRestore[i], _passiveObjects[i], refPlaneNormal, refPlane, forward); refPlaneNormal, refPlane, forward); synchronizer.addFuture(future); synchronizer.addFuture(future); } } synchronizer.waitForFinished(); synchronizer.waitForFinished(); 21
  • 23. Writing Software Better • Several platforms, One code • Build system, devenv integration • Reusable UI – Custom widgets – Designer Plugins • Unit testing • Trolltech/Nokia support 22
  • 24. Custom Widgets & Designer Plugin 23
  • 25. Unit Testing • UI for unit testing • Selective test execution 24
  • 26. Conclusion • Better software – Rich UI, integrate with modern technology – Improve workflows and provide richer functionnality • Better tool – Streamline development cycle – Improve stability and quality 25