/// \file /// \ingroup tutorial_cocoa /// This demo shows how to use transparency. /// On MacOS X you can see the transparency in a canvas, /// you can save canvas contents as pdf/png /// (and thus you'll have an image with transparency on every platform). /// /// \macro_code /// /// \author Timur Pocheptsov //Includes for ACLiC (cling does not need them). #include "TVirtualX.h" #include "TCanvas.h" #include "TColor.h" #include "TError.h" #include "TH1F.h" //Aux. functions for tutorials/cocoa. #include "customcolor.h" void transp() { //1. Try to find free indices for our custom colors. //We can use hard-coded indices like 1001, 1002, 1003, ... but //I prefer to find free indices in a ROOT's color table //to avoid possible conflicts with other tutorials. Color_t indices[2] = {}; if (ROOT::CocoaTutorials::FindFreeCustomColorIndices(indices) != 2) { ::Error("transp", "failed to create new custom colors"); return; } //2. Now that we have indices, create our custom colors. const Color_t redIndex = indices[0], greeIndex = indices[1]; new TColor(redIndex, 1., 0., 0., "red", 0.85); new TColor(greeIndex, 0., 1., 0., "green", 0.5); //3. Test that back-end is TGCocoa. TCanvas * const cnv = new TCanvas("transparency", "transparency demo", 600, 400); //After we created a canvas, gVirtualX in principle should be initialized //and we can check its type: if (gVirtualX && !gVirtualX->InheritsFrom("TGCocoa")) { Warning("transp", "You can see the transparency ONLY in a pdf or png output (\"File\"->\"Save As\" ->...)\n" "To have transparency in a canvas graphics, you need MacOSX version with cocoa enabled"); } TH1F * const hist = new TH1F("a5", "b5", 10, -2., 3.); TH1F * const hist2 = new TH1F("c6", "d6", 10, -3., 3.); hist->FillRandom("landau", 100000); hist2->FillRandom("gaus", 100000); hist->SetFillColor(redIndex); hist2->SetFillColor(greeIndex); cnv->cd(); hist2->Draw(); hist->Draw("SAME"); }