MantisBT
Mantis Bug Tracker Workflow

View Issue Details Jump to Notes ] Related Changesets ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0031683Community[OCCT] OCCT:Visualizationpublic2020-07-23 08:242020-09-13 11:47
ReporterVico Liang 
Assigned Toabv 
PrioritynormalSeverityfeature 
StatusverifiedResolutionfixed 
PlatformOSOS Version
Product Version 
Target Version[OCCT] 7.5.0Fixed in Version 
Summary0031683: Visualization - V3d_View::SetBackgroundImage() should accept Image_PixMap
Descriptionvoid V3d_View::SetBackgroundImage (const Standard_CString theFileName,
                                   const Aspect_FillMethod theFillStyle,
                                   const Standard_Boolean theToUpdate)

It's impossible to make above function SetBackgroundImage working without freeimage library. This function accepts an image file path and internal calls freeimage to load the file.

In my cases, i don't want to build and link freeimage at all, but i still want to use the feature such as texture, image background, image output. i just don't want to work with filename directly. in stead, i want to use Image_PixMap as input, and then i can fill and extract data from Image_PixMap.Actaully in most cases, read and save image features are provided on application level, such as QT framework, MFC, etc.

My suggegstion is to reduce the usage of Image_AlienPixMap and provide method to support Image_PixMap as alternate of file path.
Steps To ReproduceNot required
TagsNo tags attached.
Test case numberNot required
Attached Files

- Relationships
related to 0031129newkgv Open CASCADE Visualization - revise background / environment API 
related to 0030549resolvedabv Open CASCADE Coding - split Image_AlienPixMap into several classes 
related to 0031686newkgv Community Visualization - V3d_View::SetBackgroundImage() not working for .bmp .jpg and .tga formats 

-  Notes
(0093429)
kgv (developer)
2020-08-04 16:27

It is proposed extending V3d_View::SetBackgroundImage() to accept Graphic3d_TextureRoot or its sub-class as generic image-provider used by other texture uploading interfaces.
(0093924)
git (administrator)
2020-09-02 19:45

Branch CR31683 has been created by mkrylova.

SHA-1: 3bcbd0b497e005799c0e1a0910934fe89131d5e5


Detailed log of new commits:

Author: mkrylova
Date: Wed Sep 2 16:08:35 2020 +0300

    0031683: Visualization - V3d_View::SetBackgroundImage() should accept Image_PixMap
    
    Added the extension of function SetBackgroundImage() for classes V3d_View, OpenGl_View and Graphic3d_CView
    to accept Graphic3d_Texture2Dmanual (sub-class of Graphic3d_TextureRoot) as image-provider
(0093933)
kgv (developer)
2020-09-02 20:24

+  virtual void SetBackgroundImage (const Handle(Graphic3d_Texture2Dmanual) theTexture) = 0;
...
+  Standard_EXPORT void SetBackgroundImage (const Handle(Graphic3d_Texture2Dmanual) theTexture,

Handles should passed by const reference.
Graphic3d_Texture2Dmanual should be replaced by Graphic3d_Texture2D.

   virtual void SetBackgroundImage (const TCollection_AsciiString& theFilePath) = 0;

The old method in Graphic3d_CView/OpenGl_View should be removed.
The old method in V3d_View should be updated to redirect to new one.

+  theTextureMap->EnableRepeat();
+  theTextureMap->DisableModulate();
+  theTextureMap->GetParams()->SetGenMode (Graphic3d_TOTM_MANUAL,
+                                          Graphic3d_Vec4(0.0f, 0.0f, 0.0f, 0.0f),
+                                          Graphic3d_Vec4(0.0f, 0.0f, 0.0f, 0.0f));

It is unexpected modifying theTextureMap here.

+  if (theTextureMap->IsDone())
+  {
+    anAspect->SetTextureMapOn();

Please also check for theTextureMap.IsNull() -> when NULL, background image should be disabled.
(0093935)
kgv (developer)
2020-09-02 20:29

Please also define Graphic3d_CView::SetBackgroundImage() taking Graphic3d_TextureMap and merge OpenGl_View::SetBackgroundImage()/OpenGl_View::SetBackgroundCubeMap() methods basing on Graphic3d_TextureMap sub-class type (Graphic3d_Texture2D vs. Graphic3d_CubeMap vs. raise exception).
(0094194)
git (administrator)
2020-09-07 12:43

Branch CR31683_1 has been created by mkrylova.

SHA-1: 9da9a9be93a3f1bf190d0eb9f98de0106a345e7f


Detailed log of new commits:

Author: mkrylova
Date: Wed Sep 2 16:08:35 2020 +0300

    0031683: Visualization - V3d_View::SetBackgroundImage() should accept Image_PixMap
    
    Added the extension of function SetBackgroundImage() for class V3d_View to accept
    Graphic3d_Texture2D and for classes OpenGl_View and Graphic3d_CView
    to accept Graphic3d_TextureMap as image-provider.
    Merged functions SetBackgroundCubeMap() and SetBackroundImage() to SetBackroundImage in classes
    OpenGl_View and Graphic3d_CView
(0094196)
kgv (developer)
2020-09-07 14:16

-void OpenGl_View::SetBackgroundImage (const TCollection_AsciiString& theFilePath)
+void OpenGl_View::SetBackgroundImage (const Handle(Graphic3d_TextureMap)& theTextureMap,
+                                      Standard_Boolean theToUpdatePBREnv)
...
+    aTextureMap->DisableModulate();

Please do not modify input object.
Texture map should be pre-configured (e.g. like within V3d_View taking TCollection_AsciiString).

+  if (!aTextureMap.IsNull())
+  {
+    aTextureMap->DisableModulate();
+    anAspect->SetTextureMap (aTextureMap);
+    // Enable texture mapping
+    if (aTextureMap.IsNull())
+    {
+      myBackgroundType = Graphic3d_TOB_NONE;
+      return;
+    }

This will not work like that.
Please instead check theTextureMap.IsNull() at the beginning of the function.

+  Handle(Graphic3d_Texture2D) aTextureMap = Handle(Graphic3d_Texture2D)::DownCast (theTextureMap);

+  if (!aTextureMap.IsNull())
+  {

theToUpdatePBREnv is ignored within this branch.
Expected behavior is like setting a NULL cubemap:
> if (theToUpdatePBREnv) { myPBREnvRequest = OpenGl_PBREnvRequest_CLEAR; }

+    Message::SendFail() << "Error: it is imposible to make this object as backround\n";


Please throw Standard_ProgramError instead of printing the message.

 void Graphic3d_CView::CopySettings (const Handle(Graphic3d_CView)& theOther)
 {
+  Handle(Graphic3d_Texture2D) aTextureMap = new Graphic3d_Texture2Dmanual(theOther->BackgroundImage());
   
ChangeRenderingParams() = theOther->RenderingParams();
   SetBackground            (theOther->Background());
   SetGradientBackground    (theOther->GradientBackground());
-  SetBackgroundImage       (theOther->BackgroundImage());
+  SetBackgroundImage       (aTextureMap);

Graphic3d_CView::BackgroundImage() should return now Graphic3d_TextureMap.
(0094267)
git (administrator)
2020-09-08 19:33

Branch CR31683_1 has been updated by mkrylova.

SHA-1: 2a05b2a6f2dbdd349487b6ddda5dc330adade878


Detailed log of new commits:

Author: mkrylova
Date: Tue Sep 8 19:34:10 2020 +0300

    kgv remarks

(0094268)
git (administrator)
2020-09-08 19:35

Branch CR31683_2 has been created by mkrylova.

SHA-1: effed7da9394a279abbae35c5091d4b189946cfc


Detailed log of new commits:

Author: mkrylova
Date: Wed Sep 2 16:08:35 2020 +0300

    0031683: Visualization - V3d_View::SetBackgroundImage() should accept Image_PixMap
    
    Added the extension of function SetBackgroundImage() for class V3d_View to accept
    Graphic3d_Texture2D and for classes OpenGl_View and Graphic3d_CView
    to accept Graphic3d_TextureMap as image-provider.
    Merged functions SetBackgroundCubeMap() and SetBackroundImage() to SetBackroundImage in classes
    OpenGl_View and Graphic3d_CView
(0094270)
kgv (developer)
2020-09-08 19:53

+  //! Sets background image texture file path.
+  Standard_EXPORT virtual void SetBackgroundImage (const TCollection_AsciiString& theFilePath) Standard_OVERRIDE;


This method should be kept removed (the similar method taking image file path in V3d_View is supposed to be left).
(0094302)
git (administrator)
2020-09-09 15:28

Branch CR31683_2 has been updated by mkrylova.

SHA-1: a15a9cd601149094e4b4314c6aaa782c406e8251


Detailed log of new commits:

Author: mkrylova
Date: Wed Sep 9 15:31:55 2020 +0300

    kgv remarks: remove method OpenGl_View::SetBackgroundImage (const TCollection_AsciiString& theFilePath)

(0094303)
git (administrator)
2020-09-09 15:30

Branch CR31683_3 has been created by mkrylova.

SHA-1: ce008c204e2c7910d90af38bb441d8984488855a


Detailed log of new commits:

Author: mkrylova
Date: Wed Sep 2 16:08:35 2020 +0300

    0031683: Visualization - V3d_View::SetBackgroundImage() should accept Image_PixMap
    
    Added the extension of function SetBackgroundImage() for class V3d_View to accept
    Graphic3d_Texture2D and for classes OpenGl_View and Graphic3d_CView
    to accept Graphic3d_TextureMap as image-provider.
    Merged functions SetBackgroundCubeMap() and SetBackroundImage() to SetBackroundImage in classes
    OpenGl_View and Graphic3d_CView
(0094310)
git (administrator)
2020-09-09 16:26

Branch CR31683_3 has been updated by mkrylova.

SHA-1: bddb5f88a718a8938286a467145ca4fc21a8dc9e


Detailed log of new commits:

Author: mkrylova
Date: Wed Sep 9 16:16:02 2020 +0300

    kgv remarks

(0094311)
git (administrator)
2020-09-09 16:28

Branch CR31683_4 has been created by mkrylova.

SHA-1: d8f18a3f3d8157bcdc4330e25bd6c36337fc5850


Detailed log of new commits:

Author: mkrylova
Date: Wed Sep 2 16:08:35 2020 +0300

    0031683: Visualization - V3d_View::SetBackgroundImage() should accept Image_PixMap
    
    Added the extension of function SetBackgroundImage() for class V3d_View to accept
    Graphic3d_Texture2D and for classes OpenGl_View and Graphic3d_CView
    to accept Graphic3d_TextureMap as image-provider.
    Merged functions SetBackgroundCubeMap() and SetBackroundImage() to SetBackroundImage in classes
    OpenGl_View and Graphic3d_CView
(0094361)
git (administrator)
2020-09-10 11:25

Branch CR31683_5 has been created by kgv.

SHA-1: daecd7ab3feb43fe820b2175fe00e1302ca27166


Detailed log of new commits:

Author: mkrylova
Date: Wed Sep 2 16:08:35 2020 +0300

    0031683: Visualization - V3d_View::SetBackgroundImage() should accept Image_PixMap
    
    Added V3d_View::SetBackgroundImage() accepting Graphic3d_Texture2D on input.
    
    Graphic3d_CView/OpenGl_View have been modified to merge Graphic3d_CView::SetBackgroundImage()
    and ::SetBackgroundCubeMap() implementations into a single method.
(0094362)
git (administrator)
2020-09-10 11:40

Branch CR31683_4 has been updated by mkrylova.

SHA-1: ef207e619490d7c0997945714dee931061d30596


Detailed log of new commits:

Author: mkrylova
Date: Thu Sep 10 11:43:07 2020 +0300

    kgv remarks: fixed warnings

(0094374)
kgv (developer)
2020-09-10 13:59

Please raise the patch
- OCCT branch: CR31683_5.

http://jenkins-test-12.nnov.opencascade.com:8080/view/CR31683_5-master-KGV/ [^]
(0094540)
bugmaster (administrator)
2020-09-13 11:04

Combination -
OCCT branch : IR-2020-09-11
master SHA - d1b25684e9402d995dafec22fb98f83957d5fb76
a206de37fbfa0bf71bd534ae47192bbec23b8522
Products branch : IR-2020-09-11 SHA - a7e55a291cf6642cb4af945a999deeeb5f91272a
was compiled on Linux, MacOS and Windows platforms and tested in optimize mode.

Number of compiler warnings:
No new/fixed warnings

Regressions/Differences/Improvements:
No regressions/differences

CPU differences:
Debian80-64:
OCCT
Total CPU difference: 17333.360000000142 / 17325.800000000123 [+0.04%]
Products
Total CPU difference: 12056.720000000096 / 12079.64000000011 [-0.19%]
Windows-64-VC14:
OCCT
Total CPU difference: 18817.921875 / 18792.46875 [+0.14%]
Products
Total CPU difference: 13294.09375 / 13274.75 [+0.15%]


Image differences :
No differences that require special attention

Memory differences :
No differences that require special attention
(0094576)
git (administrator)
2020-09-13 11:45

Branch CR31683_4 has been deleted by inv.

SHA-1: ef207e619490d7c0997945714dee931061d30596
(0094577)
git (administrator)
2020-09-13 11:45

Branch CR31683_5 has been deleted by inv.

SHA-1: daecd7ab3feb43fe820b2175fe00e1302ca27166
(0094581)
git (administrator)
2020-09-13 11:46

Branch CR31683_3 has been deleted by inv.

SHA-1: bddb5f88a718a8938286a467145ca4fc21a8dc9e
(0094584)
git (administrator)
2020-09-13 11:46

Branch CR31683_2 has been deleted by inv.

SHA-1: a15a9cd601149094e4b4314c6aaa782c406e8251
(0094586)
git (administrator)
2020-09-13 11:46

Branch CR31683_1 has been deleted by inv.

SHA-1: 2a05b2a6f2dbdd349487b6ddda5dc330adade878
(0094603)
git (administrator)
2020-09-13 11:47

Branch CR31683 has been deleted by inv.

SHA-1: 3bcbd0b497e005799c0e1a0910934fe89131d5e5

- Related Changesets
occt: master 99289bed
Timestamp: 2020-09-02 13:08:35
Author: abv
Committer: abv
Details ] Diff ]
0031683: Visualization - V3d_View::SetBackgroundImage() should accept Image_PixMap

Added V3d_View::SetBackgroundImage() accepting Graphic3d_Texture2D on input.

Graphic3d_CView/OpenGl_View have been modified to merge Graphic3d_CView::SetBackgroundImage()
and ::SetBackgroundCubeMap() implementations into a single method.
mod - src/Graphic3d/Graphic3d_CView.hxx Diff ] File ]
mod - src/OpenGl/OpenGl_View.cxx Diff ] File ]
mod - src/OpenGl/OpenGl_View.hxx Diff ] File ]
mod - src/V3d/V3d_View.cxx Diff ] File ]
mod - src/V3d/V3d_View.hxx Diff ] File ]

- Issue History
Date Modified Username Field Change
2020-07-23 08:24 Vico Liang New Issue
2020-07-23 08:24 Vico Liang Assigned To => kgv
2020-07-23 09:12 kgv Relationship added related to 0031129
2020-07-23 09:13 kgv Relationship added related to 0030549
2020-07-23 09:14 kgv Summary Reduce freeimage dependance => Visualization - V3d_View::SetBackgroundImage() should accept Image_PixMap
2020-07-24 11:52 kgv Relationship added related to 0031686
2020-08-04 16:27 kgv Note Added: 0093429
2020-08-04 16:27 kgv Assigned To kgv => mkrylova
2020-08-04 16:27 kgv Status new => assigned
2020-09-02 19:45 git Note Added: 0093924
2020-09-02 19:46 mkrylova Assigned To mkrylova => osa
2020-09-02 19:46 mkrylova Status assigned => resolved
2020-09-02 19:46 mkrylova Steps to Reproduce Updated View Revisions
2020-09-02 20:24 kgv Note Added: 0093933
2020-09-02 20:24 kgv Assigned To osa => mkrylova
2020-09-02 20:24 kgv Status resolved => assigned
2020-09-02 20:29 kgv Note Added: 0093935
2020-09-07 12:43 git Note Added: 0094194
2020-09-07 12:44 mkrylova Assigned To mkrylova => osa
2020-09-07 12:44 mkrylova Status assigned => resolved
2020-09-07 14:16 kgv Note Added: 0094196
2020-09-07 14:16 kgv Assigned To osa => mkrylova
2020-09-07 14:16 kgv Status resolved => assigned
2020-09-08 19:33 git Note Added: 0094267
2020-09-08 19:35 git Note Added: 0094268
2020-09-08 19:53 kgv Note Added: 0094270
2020-09-09 15:28 git Note Added: 0094302
2020-09-09 15:30 git Note Added: 0094303
2020-09-09 15:31 mkrylova Assigned To mkrylova => osa
2020-09-09 15:31 mkrylova Status assigned => resolved
2020-09-09 15:46 kgv Assigned To osa => mkrylova
2020-09-09 15:46 kgv Status resolved => assigned
2020-09-09 16:26 git Note Added: 0094310
2020-09-09 16:28 git Note Added: 0094311
2020-09-10 11:25 git Note Added: 0094361
2020-09-10 11:40 git Note Added: 0094362
2020-09-10 13:59 kgv Note Added: 0094374
2020-09-10 13:59 kgv Assigned To mkrylova => bugmaster
2020-09-10 13:59 kgv Status assigned => resolved
2020-09-10 14:00 kgv Status resolved => reviewed
2020-09-13 11:04 bugmaster Note Added: 0094540
2020-09-13 11:04 bugmaster Status reviewed => tested
2020-09-13 11:14 bugmaster Test case number => Not required
2020-09-13 11:24 abv Changeset attached => occt master 99289bed
2020-09-13 11:24 abv Assigned To bugmaster => abv
2020-09-13 11:24 abv Status tested => verified
2020-09-13 11:24 abv Resolution open => fixed
2020-09-13 11:45 git Note Added: 0094576
2020-09-13 11:45 git Note Added: 0094577
2020-09-13 11:46 git Note Added: 0094581
2020-09-13 11:46 git Note Added: 0094584
2020-09-13 11:46 git Note Added: 0094586
2020-09-13 11:47 git Note Added: 0094603


Copyright © 2000 - 2020 MantisBT Team
Powered by Mantis Bugtracker