Manager de ferestre de stivă

Un manager de ferestre de stivă (numit și manager de ferestre plutitoare ) este un manager de ferestre care desenează toate ferestrele într-o anumită ordine, permițându-le să se suprapună, folosind o tehnică numită algoritmul pictorului . Toți managerii de ferestre care permit suprapunerea ferestrelor, dar nu managerii de ferestre compozite , sunt considerați manageri de ferestre compozite , deși este posibil ca nu toți să folosească exact aceleași metode. Alți manageri de ferestre care nu sunt considerați manageri de ferestre de stivă se numesc manageri de ferestre cadru [1] , care nu permit suprapunerea ferestrelor.

Managerii de ferestre stivuite permit ferestrelor să se suprapună desenându-le pe rând. Suprapunerea sau revopsirea (conform algoritmului artistului ) se referă la randarea fiecărei ferestre ca o imagine desenată direct deasupra desktopului și deasupra oricăror alte ferestre care ar fi fost deja desenate, ștergând efectiv zonele acoperite. Procesul începe de obicei de la desktop și continuă prin desenarea fiecărei ferestre și a oricăror ferestre copil din spate în față, până când în cele din urmă este desenată fereastra din prim-plan. [2]

Ordinea în care vor fi suprapuse ferestrele se numește ordine de stivuire .

Restricții

Suprapunerea este un proces relativ lent, care necesită ca fiecare fereastră să fie redesenată una câte una, din partea din spate și cea mai exterioară până la cea din față și cea mai interioară. Mulți manageri de ferestre de stivă nu redesenează întotdeauna ferestrele de fundal. Alții pot determina când toate ferestrele trebuie redesenate, deoarece unele aplicații solicită o suprapunere atunci când rezultatul lor s-a schimbat. Redenarea se face de obicei prin apelarea unei funcții de manager de ferestre care redesenează selectiv ferestrele după cum este necesar. De exemplu, dacă o fereastră de fundal este adusă în prim-plan, doar acea fereastră trebuie redesenată.

Un dezavantaj binecunoscut al suprapunerilor este că atunci când ferestrele sunt vopsite, acestea șterg de fapt conținutul anterior al oricărei părți a ecranului pe care o acoperă. Aceste ferestre trebuie redesenate atunci când sunt aduse în prim-plan sau când părți din ele sunt vizibile. Când o fereastră este schimbată sau când poziția sa pe ecran s-a schimbat, managerul de ferestre va detecta acest lucru și poate rearanja toate ferestrele, necesitând redesenarea fiecărei ferestre și transmite noul său aspect managerului de ferestre înainte de a fi desenat. . Când o aplicație nu răspunde, este posibil să nu se poată redesena singură, ceea ce uneori face ca zona din interiorul cadrului ferestrei să rețină imagini ale altor ferestre atunci când este adusă în prim-plan. Această problemă este întâlnită în mod obișnuit pe Windows XP și versiuni anterioare, precum și pe unii manageri de ferestre X Window System.

O altă limitare majoră care afectează aproape toți managerii de ferestre de stivă este că acestea sunt adesea sever limitate în măsura în care interfața poate fi accelerată de unitatea de procesare grafică (GPU) și există foarte puține lucruri de făcut în acest sens.

Cum să evitați restricțiile

Mai multe progrese tehnologice au reușit să reducă sau să elimine unele dintre deficiențele suprapunerii. O soluție posibilă la disponibilitatea limitată a accelerației hardware este de a trata o singură fereastră din prim-plan ca un caz special care diferă de alte ferestre.

Acest lucru nu necesită întotdeauna reproiectarea managerului de ferestre, deoarece fereastra din prim-plan este desenată ultima într-o locație cunoscută de pe ecran și nu este acoperită de alte ferestre. Prin urmare, poate fi ușor izolat pe ecran după ce a fost desenat. De exemplu, deoarece știm unde se află fereastra din prim-plan atunci când bitmap-ul ecranului ajunge la hardware-ul grafic, zona ocupată de fereastra din prim-plan poate fi ușor înlocuită cu o textură accelerată.

Cu toate acestea, dacă managerul de ferestre poate oferi aplicației și o imagine actualizată a modului în care arăta ecranul înainte de a fi desenată fereastra din prim-plan, dar după ce toate celelalte ferestre au fost deja desenate, se deschid posibilități suplimentare. Acest lucru ar permite ca fereastra unică din prim-plan să pară translucidă atunci când se utilizează imaginea ca filtru de textură în rezultatul final. Acest lucru a fost posibil în Windows XP cu software-ul inclus cu multe plăci grafice NVidia GeForce , precum și de la terți, folosind maparea texturii hardware. [3]

O altă metodă de reducere a limitărilor suprapunerilor este utilizarea suprapunerii hardware și a cromakey -ului . Deoarece GPU-ul poate desena pe ecranul de ieșire, este desenată o fereastră care conține o culoare cunoscută care permite hardware-ului video să determine ce părți ale ferestrei sunt afișate și pe care să deseneze. Această metodă vă permite să adăugați videoclipuri și animații accelerate la ferestrele 3D și 2D.

Videoclipul pe ecran complet poate fi văzut și ca o modalitate de a evita limitările suprapunerilor. Modul ecran complet suspendă temporar nevoia oricărei ferestre de gestionare , permițând aplicațiilor să aibă acces deplin la placa grafică. Jocurile 3D accelerate în Windows XP și mai devreme s-au bazat în întregime pe această metodă, deoarece aceste jocuri nu ar fi putut fi jucate în modul ferestre. Cu toate acestea, din punct de vedere tehnic, această metodă nu are nimic de-a face cu managerul de ferestre și este doar un înlocuitor al acestuia.

Manageri de ferestre hibride

Unii manageri de ferestre pot trata fereastra din prim-plan destul de diferit, afișând-o indirect și trimițând ieșirea acesteia pe placa video pentru a fi adăugată la bitmap -ul de ieșire . Deși această tehnică poate fi implementată în unele manageri de ferestre de stivă, este combinată tehnic , fereastra din prim-plan și bitmap-ul ecranului fiind tratate la fel ca două ferestre într-un manager de ferestre compus .

După cum s-a descris mai devreme, poate exista acces la o etapă anterioară de suprapunere atunci când fereastra din prim-plan nu a fost încă desenată. Chiar dacă este redat mai târziu și trimis pe placa grafică, puteți să îl suprascrieți complet în hardware cu o versiune ușor învechită și apoi să creați un compozit fără măcar să desenați fereastra în locația originală. Acest lucru permite ca fereastra din prim-plan să fie transparentă sau chiar 3D.

Din păcate, interacțiunea cu obiecte din afara zonei inițiale a ferestrei din prim-plan poate fi, de asemenea, imposibilă, deoarece managerul de ferestre nu va putea determina ce vede utilizatorul și va transmite astfel de clicuri de mouse către orice program care ocupă acele zone ale ecranului în momentul ultimul eveniment de suprapunere.

X Window System

Mulți manageri de ferestre din sistemul X Window oferă funcționalitate de ferestre de stivă:

Microsoft Windows

Microsoft Windows 1.0 a afișat ferestrele utilizând un manager de ferestre cadru . În Windows 2.0, acesta a fost înlocuit cu un manager de ferestre stivuitor care permitea suprapunerea ferestrelor. Microsoft a susținut managerul de ferestre stivuibile înainte de Windows XP, care prezenta limitări severe ale capacității sale de a afișa conținut accelerat hardware în ferestrele obișnuite. Deși din punct de vedere tehnic a fost posibil să se creeze unele imagini cu software terță parte. [3] Începând cu Windows Vista , noul manager de ferestre compus este utilizat în mod implicit pe sistemele compatibile. [patru]

Istorie

Vezi și

Note

  1. Cum se face: Alegerea unui Manager de ferestre în Linux . Engadget . Preluat la 22 august 2019. Arhivat din original la 1 noiembrie 2012.
  2. Algoritmul pictorului . medialab.di.unipi.it . Preluat la 22 august 2019. Arhivat din original la 18 iulie 2019.
  3. 1 2 TweakGuides.com - Ghid Nvidia GeForce Tweak (link indisponibil) . www.tweakguides.com . Preluat la 22 august 2019. Arhivat din original la 22 august 2019. 
  4. Desktop Window Manager - aplicații Windows . docs.microsoft.com . Preluat la 22 august 2019. Arhivat din original la 4 mai 2019.
  5. Xerox Alto . toastytech.com . Preluat la 22 august 2019. Arhivat din original la 6 noiembrie 2015.
  6. Steaua Xerox . toastytech.com . Preluat la 22 august 2019. Arhivat din original la 18 iulie 2011.
  7. GEM 1.1 . toastytech.com . Preluat la 22 august 2019. Arhivat din original la 2 octombrie 2019.
  8. GEM 2.0 . toastytech.com . Preluat la 22 august 2019. Arhivat din original la 1 octombrie 2019.

Link -uri