Commit 51c5f63f authored by Jérémie Dudouet's avatar Jérémie Dudouet
Browse files

Merge branch 'preprod' into 'master'

Preprod

See merge request IPNL_GAMMA/gammaware!23
parents 6e2fdb64 224f4bbb
Pipeline #21914 passed with stage
in 3 minutes and 27 seconds
......@@ -94,7 +94,7 @@ ELSE(found_root_major_vers LESS 6)
ENDIF(found_root_major_vers LESS 6)
#
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-uninitialized -Wno-unused-function -Wno-unused-result -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-but-set-parameter -Wno-overloaded-virtual -Wno-switch")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-uninitialized -Wno-unused-function -Wno-unused-result -Wno-unused-variable -Wno-overloaded-virtual -Wno-switch")
MESSAGE("[GW from ROOT] C Compiler ${CMAKE_C_COMPILER}")
MESSAGE("[GW from ROOT] C++ Compiler ${CMAKE_CXX_COMPILER}")
......
......@@ -433,7 +433,8 @@ public:
*/
virtual UShort_t D2Bytes(Double_t x) const {
if ( x <= fXmin ) return 0u;
if ( x > fXmax ) return fNBins2; return UShort_t(fNBins2*(x-fXmin)/fDeltaX) ;
if ( x > fXmax ) return fNBins2;
return UShort_t(fNBins2*(x-fXmin)/fDeltaX) ;
}
//! returns (as UInt_t) the bin corresponding to x
......@@ -441,7 +442,8 @@ public:
*/
virtual UInt_t D4Bytes(Double_t x) const {
if ( x <= fXmin ) return 0u;
if ( x > fXmax ) return fNBins4; return UInt_t(fNBins4*(x-fXmin)/fDeltaX) ;
if ( x > fXmax ) return fNBins4;
return UInt_t(fNBins4*(x-fXmin)/fDeltaX) ;
}
//! returns a randomized value corresponding to the given bin
......
......@@ -24,7 +24,7 @@
#define ADF_PtrStack
#define ADF_PTRSTACK_H ADF_PtrStack
#include <memory.h>
#include <Memory.h>
namespace ADF
{
......@@ -158,7 +158,8 @@ template <typename T, typename S> void PtrStack<T,S>::Delete()
if ( fStack == NULL || fFilledSize == 0 ) return;
for (S i = 0; i < fMaxSize; i++) {
if ( fStack[i] && fIsOwner ) delete fStack[i]; fStack[i] = NULL;
if ( fStack[i] && fIsOwner ) delete fStack[i];
fStack[i] = NULL;
}
fFilledSize = fCurrentSize = 0;
}
......
......@@ -45,7 +45,9 @@ RunAgent::~RunAgent()
void RunAgent::Reset(const Char_t *opt)
{
if(!opt) fExperiment = "An experiment"; fRunNumber = fSubRunNumber = 0;
if(!opt) fExperiment = "An experiment";
fRunNumber = fSubRunNumber = 0;
// x,y,z
fGlobalVertex[0] = 0;
fGlobalVertex[1] = 0;
......
......@@ -69,6 +69,7 @@ void ClickCollector::DoCollect(Int_t event, Int_t px, Int_t py, TObject */*obj*/
ClickCollector * ClickCollector::TheCollector()
{
if ( gfCollector == NULL ) new ClickCollector(); return gfCollector;
if ( gfCollector == NULL ) new ClickCollector();
return gfCollector;
}
......@@ -453,6 +453,8 @@ void ReadMezzAFP::process_initialise (unsigned int *error_code)
afile.close();
TotalEntryFileSize += size;
}
/* fall through */
case 2:
Log << info << "List of file to be read is " << fListOfFile.size() << nline ;
break;
......
......@@ -695,9 +695,8 @@ void TTreeWithConditions::SetDirectory(TDirectory *mother_dir_of_watcher, TDirec
Watcher::SetDirectory(mother_dir_of_watcher,mother_dir_tag,load_objects);
if ( GetDirectory() == 0x0 )
return;
// add also conditions to the watcher diectory
new_cond_dir = GetDirectory()->GetDirectory(Form("%s/ListOfGCuts",GetName()));
new_cond_dir = GetDirectory()->GetDirectory(Form("%s/ListOfGCuts",GetName()));
if ( new_cond_dir == 0x0 )
new_cond_dir = GetDirectory()->mkdir(Form("%s/ListOfGCuts",GetName()));
//
......
......@@ -80,7 +80,8 @@ void Random::SetCurrent(const char *name)
fCurrent = dynamic_cast<TRandom *>(r);
// keep a copy of gRandomom and synchronise gRandomom with this
if ( fROOT == NULL ) fROOT = gRandom; gRandom = fCurrent;
if ( fROOT == NULL ) fROOT = gRandom;
gRandom = fCurrent;
}
}
......
......@@ -498,8 +498,7 @@ Int_t BaseGEM::DoCascade(TSeqCollection &cas, Int_t which_first, Option_t *o)
return result;
TString opt(o);
if ( !opt.Contains("add",TString::kIgnoreCase) )
cas.Clear("nodelete");
if ( !opt.Contains("add",TString::kIgnoreCase) ) cas.Clear("nodelete");
// Ask the random generator for that feeding for the next link in the level scheme and keep on going with it
obj = ((RandObj *)fRandFeeding.At( which_first ))->Rand();
......
......@@ -60,7 +60,7 @@ endforeach()
if ( RDICTIONNARY EQUAL 1 )
ROOT_GENERATE_DICTIONARY(G__${GWLIBNAME} ${headers} MODULE ${GWLIBNAME} LINKDEF ${CMAKE_CURRENT_SOURCE_DIR}/LinkDef.h OPTIONS "")
find_library(ISMATHMORE MathMore)
if ( ISMATHMORE EQUAL ISMATHMORE_NOTFOUND)
if(NOT ISMATHMORE)
set( EXTRA_EXTERNAL_LIBRARIES Core Graf MathCore XMLParser Hist Physics Gui Spectrum Tree RIO Gpad )
MESSAGE("[GW-GEM] Compiled without MathMore")
else()
......@@ -71,7 +71,7 @@ if ( RDICTIONNARY EQUAL 1 )
else ()
ROOT_GENERATE_DICTIONARY(G__${GWLIBNAME} ${headers} LINKDEF ${CMAKE_CURRENT_SOURCE_DIR}/LinkDef.h)
find_library(ISMATHMORE MathMore)
if ( ISMATHMORE EQUAL ISMATHMORE_NOTFOUND)
if(NOT ISMATHMORE)
set( EXTRA_EXTERNAL_LIBRARIES Core Graf MathCore XMLParser Hist Physics Gui Spectrum Tree RIO Gpad )
MESSAGE("[GW-GEM] Compiled without MathMore")
else()
......
......@@ -47,7 +47,8 @@ GeantLMOF::GeantLMOF()
GeantLMOF::~GeantLMOF()
{
if ( fGamma ) delete fGamma; fGamma = NULL;
if ( fGamma ) delete fGamma;
fGamma = NULL;
}
TGeoVolume *GeantLMOF::ImportAgataG4(const char *asolid, const char *aclust, const char *aeuler, const char */*top*/)
......@@ -231,13 +232,16 @@ Bool_t GeantLMOF::NextEvent(UInt_t asked_mult)
if ( id == -100 ) { mult = kMaxUInt; continue; }
if ( id == -101 ) { // source velocity
if ( gDebug == 1 ) cout << "New source velocity (-101) ... not yet treated " << endl; continue;
if ( gDebug == 1 ) cout << "New source velocity (-101) ... not yet treated " << endl;
continue;
}
if ( id == -102 ) { // source position
if ( gDebug == 1 ) cout << "New source position (-102) ... not yet treated " << endl; continue;
if ( gDebug == 1 ) cout << "New source position (-102) ... not yet treated " << endl;
continue;
}
if ( id == -103 ) { // fTime emission
if ( gDebug ) cout << "New fTime emission (-103) ... not yet treated " << endl; continue;
if ( gDebug ) cout << "New fTime emission (-103) ... not yet treated " << endl;
continue;
}
if ( id >= 0 ) { // id is the detector number
if ( gDebug == 1 ) cout << " Start new impact " << fNbEmitted << endl;
......
......@@ -82,7 +82,7 @@ private:
Double_t fRecoilDy;
Double_t fRecoilDz;
Double_t fRecoilAngle;
Double_t fTime;
// Double_t fTime;
UInt_t fNbEmitted;
UInt_t fNbImpacts;
......
......@@ -5,7 +5,13 @@
#----------------------------------------------------------------------------
# Add modules
#
add_subdirectory (cubix)
if (found_root_major_vers LESS 6)
MESSAGE( "ERROR: Invalid ROOT version \"${ROOTERSION}\", at least major version 6 is required for Cubix, e.g. \"6.00/00\"")
MESSAGE( "[GW] !!! Cubix ignored")
else()
add_subdirectory (cubix)
endif (found_root_major_vers LESS 6)
......@@ -18,7 +18,7 @@ PROJECT(${PROG_NAME})
MESSAGE("[GW] + root/gui/${PROJECT_NAME}")
#Set C++11
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread -Wno-unused-parameter -Wno-sign-compare -Wno-unused-but-set-variable" )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread -Wno-unused-parameter -Wno-sign-compare" )
#Set ROOT
set (ROOT_FIND_COMPONENTS Core MathCore Hist Gui Gpad Graf RIO Matrix Physics Thread MultiProc Spectrum)
......@@ -32,7 +32,7 @@ if (ROOT_CONFIG)
endif()
else()
message(STATUS "ROOTConfig.cmake not found, trying to use FindROOT.cmake...")
find_package(ROOT REQUIRED COMPONENTS Core MathCore Hist Gui Gpad Graf RIO Matrix Physics Thread MultiProc)
find_package(ROOT REQUIRED COMPONENTS Core MathCore Hist Gui Gpad Graf RIO Matrix Physics Thread MultiProc Spectrum)
INCLUDE_DIRECTORIES( ${ROOT_INCLUDE_DIR} )
LINK_DIRECTORIES( ${ROOT_LIBRARY_DIR} )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ROOT_CXX_FLAGS}" )
......@@ -41,20 +41,9 @@ endif()
if(ROOT_FOUND)
include_directories(${ROOT_INCLUDE_DIRS})
else()
message(ERROR "ROOT not found")
message(ERROR ": ROOT not found !!!")
endif()
#
# Redirection to the right macro depending on the ROOT version
#
STRING(REGEX REPLACE "^([0-9]+)\\.[0-9][0-9]+\\/[0-9][0-9]+.*" "\\1" found_root_major_vers "${ROOTVERSION}")
STRING(REGEX REPLACE "^[0-9]+\\.([0-9][0-9])+\\/[0-9][0-9]+.*" "\\1" found_root_minor_vers "${ROOTVERSION}")
STRING(REGEX REPLACE "^[0-9]+\\.[0-9][0-9]+\\/([0-9][0-9]+).*" "\\1" found_root_patch_vers "${ROOTVERSION}")
IF (found_root_major_vers LESS 6)
MESSAGE( FATAL_ERROR "Invalid ROOT version \"${ROOTERSION}\", at least major version 6 is required, e.g. \"6.00/00\"")
ENDIF (found_root_major_vers LESS 6)
######################
### Link libraries ###
######################
......
......@@ -199,12 +199,10 @@ void CXCanvas::DrawEventStatus(Int_t event, Int_t px, Int_t py, TObject* selecte
// Report name and title of primitive below the cursor.
//
// This function is called when the option "Event Status"
// in the canvas menu "Options" is selected.
// in the canvas menu "Options" is selected.
char * atext = 0x0;
const Int_t kTMAX = 256;
const Int_t kTMAX=256;
static char atext[kTMAX];
if (!TestBit(kShowEventStatus) || !selected) return;
......@@ -214,14 +212,14 @@ void CXCanvas::DrawEventStatus(Int_t event, Int_t px, Int_t py, TObject* selecte
savepad = gPad;
gPad = GetSelectedPad();
fCanvasImp->SetStatusText(selected->GetTitle(), 0);
fCanvasImp->SetStatusText(selected->GetName(), 1);
fCanvasImp->SetStatusText(selected->GetTitle(),0);
fCanvasImp->SetStatusText(selected->GetName(),1);
if (event == kKeyPress)
snprintf(atext, kTMAX, "%c", (char) px);
snprintf(atext, kTMAX, "%c", (char) px);
else
snprintf(atext, kTMAX, "%d,%d", px, py);
fCanvasImp->SetStatusText(atext, 2);
fCanvasImp->SetStatusText(selected->GetObjectInfo(px, py), 3);
snprintf(atext, kTMAX, "%d,%d", px, py);
fCanvasImp->SetStatusText(atext,2);
fCanvasImp->SetStatusText(selected->GetObjectInfo(px,py),3);
gPad = savepad;
}
......@@ -353,13 +351,13 @@ void CXCanvas::HandleInput(EEventType event, Int_t px, Int_t py)
break;
case kButton1Double:
// triggered on the second button down within 350ms and within
// 3x3 pixels of the first button down, button up finishes action
case kButton1Shift:
if (FindHisto() && !FindHisto()->InheritsFrom("TH2"))
moved1D = true;
gVirtualX->SetLineWidth(1);
/* fall through */
case kButton1Down:
// find pad in which input occured
pad = Pick(px, py, prevSelObj);
......@@ -401,6 +399,9 @@ void CXCanvas::HandleInput(EEventType event, Int_t px, Int_t py)
moved2D = true;
}
}
/* fall through */
case kButton1ShiftMotion: //8 == kButton1Motion + shift modifier
if (fSelected && moved1D == false) {
......@@ -634,6 +635,7 @@ void CXCanvas::HandleInput(EEventType event, Int_t px, Int_t py)
}
}
/* fall through */
case kButton2Up:
if (fSelected) {
......@@ -647,8 +649,6 @@ void CXCanvas::HandleInput(EEventType event, Int_t px, Int_t py)
case kButton2Double:
break;
//*-*----------------------------------------------------------------------
case kButton3Down:
// popup context menu
pad = Pick(px, py, prevSelObj);
......@@ -692,6 +692,9 @@ void CXCanvas::HandleInput(EEventType event, Int_t px, Int_t py)
py = kKey_Up;
else if(py>fLastY)
py = kKey_Down;
/* fall through */
case kKeyPress:
if (!fSelectedPad || !fSelected) return;
gPad = fSelectedPad; // don't use cd() because we won't draw in pad
......
......@@ -551,13 +551,7 @@ std::vector<int> CXGammaSearch::Sort_Index(std::vector<int> Index_Nuclei, std::v
void CXGammaSearch::PrintInListBox(TString mess, Int_t Type)
{
TGGC *uGC; // will reflect user GC changes
// graphics context changes
GCValues_t val;
val.fMask = kGCFont;
uGC = gClient->GetGC(&val, kTRUE);
TGTextLBEntry *entry = new TGTextLBEntry(fResultsBox->GetContainer(), new TGString(mess), -1, uGC->GetGC());
TGTextLBEntry *entry = new TGTextLBEntry(fResultsBox->GetContainer(), new TGString(mess), fResultsBox->GetNumberOfEntries()+1);
if(Type == kError)
entry->SetBackgroundColor((Pixel_t)0xff0000);
else if(Type == kInfo)
......
......@@ -6,6 +6,7 @@
#include "TFrame.h"
#include "TPad.h"
#include "TMath.h"
#include "TROOT.h"
using namespace std;
......@@ -96,3 +97,449 @@ TBox *CXGateBox::GetBox()
return b;
}
Int_t CXGateBox::DistancetoPrimitive(Int_t px, Int_t py)
{
Int_t pxl, pyl, pxt, pyt;
Int_t px1, py1, px2, py2;
px1 = gPad->XtoAbsPixel(fX1);
py1 = gPad->YtoAbsPixel(fY1);
px2 = gPad->XtoAbsPixel(fX2);
py2 = gPad->YtoAbsPixel(fY2);
if(gPad->GetLogx()){
px1 = gPad->XtoAbsPixel(TMath::Log10(GetX1()));
px2 = gPad->XtoAbsPixel(TMath::Log10(GetX2()));
}
if(gPad->GetLogy()){
py1 = gPad->YtoAbsPixel(TMath::Log10(GetY1()));
py2 = gPad->YtoAbsPixel(TMath::Log10(GetY2()));
}
if (px1 < px2) {pxl = px1; pxt = px2;}
else {pxl = px2; pxt = px1;}
if (py1 < py2) {pyl = py1; pyt = py2;}
else {pyl = py2; pyt = py1;}
// Are we inside the box?
if (GetFillStyle()) {
if ( (px >= pxl && px <= pxt) && (py >= pyl && py <= pyt) ) return 0;
else return 9999;
}
// Are we on the edges?
Int_t dxl = TMath::Abs(px - pxl);
if (py < pyl) dxl += pyl - py;
if (py > pyt) dxl += py - pyt;
Int_t dxt = TMath::Abs(px - pxt);
if (py < pyl) dxt += pyl - py;
if (py > pyt) dxt += py - pyt;
Int_t dyl = TMath::Abs(py - pyl);
if (px < pxl) dyl += pxl - px;
if (px > pxt) dyl += px - pxt;
Int_t dyt = TMath::Abs(py - pyt);
if (px < pxl) dyt += pxl - px;
if (px > pxt) dyt += px - pxt;
Int_t distance = dxl;
if (dxt < distance) distance = dxt;
if (dyl < distance) distance = dyl;
if (dyt < distance) distance = dyt;
return distance - Int_t(0.5*fLineWidth);
}
void CXGateBox::ExecuteEvent(Int_t event, Int_t px, Int_t py)
{
if (!gPad) return;
if (!gPad->IsEditable() && event != kMouseEnter) return;
if (TestBit(kCannotMove)) return;
const Int_t kMaxDiff = 7;
const Int_t kMinSize = 20;
static Int_t px1, px2, py1, py2, pxl, pyl, pxt, pyt, pxold, pyold;
static Int_t px1p, px2p, py1p, py2p, pxlp, pylp, pxtp, pytp;
static Double_t oldX1, oldY1, oldX2, oldY2;
static Bool_t pA, pB, pC, pD, pTop, pL, pR, pBot, pINSIDE;
Int_t wx, wy;
TVirtualPad *parent = gPad;
Bool_t opaque = gPad->OpaqueMoving();
Bool_t ropaque = gPad->OpaqueResizing();
HideToolTip(event);
switch (event) {
case kButton1Double:
px1 = -1; //used by kButton1Up
break;
case kArrowKeyPress:
case kButton1Down:
oldX1 = fX1;
oldY1 = fY1;
oldX2 = fX2;
oldY2 = fY2;
gVirtualX->SetLineColor(-1);
TAttLine::Modify(); //Change line attributes only if necessary
if (GetFillColor())
gVirtualX->SetLineColor(GetFillColor());
else
gVirtualX->SetLineColor(1);
gVirtualX->SetLineWidth(2);
/* fall through */
case kMouseMotion:
px1 = gPad->XtoAbsPixel(GetX1());
py1 = gPad->YtoAbsPixel(GetY1());
px2 = gPad->XtoAbsPixel(GetX2());
py2 = gPad->YtoAbsPixel(GetY2());
if(gPad->GetLogx()){
px1 = gPad->XtoAbsPixel(TMath::Log10(GetX1()));
px2 = gPad->XtoAbsPixel(TMath::Log10(GetX2()));
}
if(gPad->GetLogy()){
py1 = gPad->YtoAbsPixel(TMath::Log10(GetY1()));
py2 = gPad->YtoAbsPixel(TMath::Log10(GetY2()));
}
if (px1 < px2) {
pxl = px1;
pxt = px2;
} else {
pxl = px2;
pxt = px1;
}
if (py1 < py2) {
pyl = py1;
pyt = py2;
} else {
pyl = py2;
pyt = py1;
}
px1p = parent->XtoAbsPixel(parent->GetX1()) + parent->GetBorderSize();
py1p = parent->YtoAbsPixel(parent->GetY1()) - parent->GetBorderSize();
px2p = parent->XtoAbsPixel(parent->GetX2()) - parent->GetBorderSize();
py2p = parent->YtoAbsPixel(parent->GetY2()) + parent->GetBorderSize();
if (px1p < px2p) {
pxlp = px1p;
pxtp = px2p;
} else {
pxlp = px2p;
pxtp = px1p;
}
if (py1p < py2p) {
pylp = py1p;
pytp = py2p;
} else {
pylp = py2p;
pytp = py1p;
}
pA = pB = pC = pD = pTop = pL = pR = pBot = pINSIDE = kFALSE;
// case pA
if (TMath::Abs(px - pxl) <= kMaxDiff && TMath::Abs(py - pyl) <= kMaxDiff) {
pxold = pxl; pyold = pyl; pA = kTRUE;
gPad->SetCursor(kTopLeft);
}
// case pB
if (TMath::Abs(px - pxt) <= kMaxDiff && TMath::Abs(py - pyl) <= kMaxDiff) {
pxold = pxt; pyold = pyl; pB = kTRUE;
gPad->SetCursor(kTopRight);
}
// case pC
if (TMath::Abs(px - pxt) <= kMaxDiff && TMath::Abs(py - pyt) <= kMaxDiff) {
pxold = pxt; pyold = pyt; pC = kTRUE;
gPad->SetCursor(kBottomRight);
}
// case pD
if (TMath::Abs(px - pxl) <= kMaxDiff && TMath::Abs(py - pyt) <= kMaxDiff) {
pxold = pxl; pyold = pyt; pD = kTRUE;
gPad->SetCursor(kBottomLeft);
}
if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
TMath::Abs(py - pyl) < kMaxDiff) { // top edge
pxold = pxl; pyold = pyl; pTop = kTRUE;
gPad->SetCursor(kTopSide);
}
if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
TMath::Abs(py - pyt) < kMaxDiff) { // bottom edge
pxold = pxt; pyold = pyt; pBot = kTRUE;
gPad->SetCursor(kBottomSide);
}
if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
TMath::Abs(px - pxl) < kMaxDiff) { // left edge
pxold = pxl; pyold = pyl; pL = kTRUE;
gPad->SetCursor(kLeftSide);
}
if ((py > pyl+kMaxDiff && py < pyt-kMaxDiff) &&
TMath::Abs(px - pxt) < kMaxDiff) { // right edge
pxold = pxt; pyold = pyt; pR = kTRUE;
gPad->SetCursor(kRightSide);
}
if ((px > pxl+kMaxDiff && px < pxt-kMaxDiff) &&
(py > pyl+kMaxDiff && py < pyt-kMaxDiff)) { // inside box
pxold = px; pyold = py; pINSIDE = kTRUE;
if (event == kButton1Down)
gPad->SetCursor(kMove);
else
gPad->SetCursor(kCross);
}
fResizing = kFALSE;
if (pA || pB || pC || pD || pTop || pL || pR || pBot)
fResizing = kTRUE;
if (!pA && !pB && !pC && !pD && !pTop && !pL && !pR && !pBot && !pINSIDE)
gPad->SetCursor(kCross);
break;
case kArrowKeyRelease:
case kButton1Motion:
wx = wy = 0;
if (pA) {
if (!ropaque) gVirtualX->DrawBox(pxold, pyt, pxt, pyold, TVirtualX::kHollow); // draw the old box
if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }
if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
if (px < pxlp) { px = pxlp; wx = px; }
if (py < pylp) { py = pylp; wy = py; }
if (!ropaque) gVirtualX->DrawBox(px , pyt, pxt, py, TVirtualX::kHollow); // draw the new box
}
if (pB) {
if (!ropaque) gVirtualX->DrawBox(pxl , pyt, pxold, pyold, TVirtualX::kHollow);
if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
if (py > pyt-kMinSize) { py = pyt-kMinSize; wy = py; }
if (px > pxtp) { px = pxtp; wx = px; }
if (py < pylp) { py = pylp; wy = py; }
if (!ropaque) gVirtualX->DrawBox(pxl , pyt, px , py, TVirtualX::kHollow);
}
if (pC) {
if (!ropaque) gVirtualX->DrawBox(pxl , pyl, pxold, pyold, TVirtualX::kHollow);
if (px < pxl+kMinSize) { px = pxl+kMinSize; wx = px; }
if (py < pyl+kMinSize) { py = pyl+kMinSize; wy = py; }
if (px > pxtp) { px = pxtp; wx = px; }
if (py > pytp) { py = pytp; wy = py; }
if (!ropaque) gVirtualX->DrawBox(pxl , pyl, px , py, TVirtualX::kHollow);
}
if (pD) {
if (!ropaque) gVirtualX->DrawBox(pxold, pyold, pxt, pyl, TVirtualX::kHollow);
if (px > pxt-kMinSize) { px = pxt-kMinSize; wx = px; }