Annotation of researchv9/X11/src/X.V11R1/server/ddx/cfb/cfbscrinit.c, revision 1.1.1.1

1.1       root        1: /************************************************************
                      2: Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
                      3: 
                      4:                     All Rights Reserved
                      5: 
                      6: Permission  to  use,  copy,  modify,  and  distribute   this
                      7: software  and  its documentation for any purpose and without
                      8: fee is hereby granted, provided that the above copyright no-
                      9: tice  appear  in all copies and that both that copyright no-
                     10: tice and this permission notice appear in  supporting  docu-
                     11: mentation,  and  that the names of Sun or MIT not be used in
                     12: advertising or publicity pertaining to distribution  of  the
                     13: software  without specific prior written permission. Sun and
                     14: M.I.T. make no representations about the suitability of this
                     15: software for any purpose. It is provided "as is" without any
                     16: express or implied warranty.
                     17: 
                     18: SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
                     19: INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
                     20: NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
                     21: ABLE  FOR  ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
                     22: ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,  DATA  OR
                     23: PROFITS,  WHETHER  IN  AN  ACTION OF CONTRACT, NEGLIGENCE OR
                     24: OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
                     25: THE USE OR PERFORMANCE OF THIS SOFTWARE.
                     26: 
                     27: ********************************************************/
                     28: 
                     29: #include "X.h"
                     30: #include "Xmd.h"
                     31: #include       <servermd.h>
                     32: #include "scrnintstr.h"
                     33: #include "pixmapstr.h"
                     34: #include "resource.h"
                     35: #include "colormap.h"
                     36: #include "colormapst.h"
                     37: #include "cfb.h"
                     38: #include "mi.h"
                     39: #include "mistruct.h"
                     40: #include "dix.h"
                     41: 
                     42: extern void miGetImage();      /* XXX should not be needed */
                     43: extern ColormapPtr CreateStaticColormap();     /* XXX is this needed? */
                     44: 
                     45: static VisualRec visuals[] = {
                     46: /* vid screen class rMask gMask bMask oRed oGreen oBlue bpRGB cmpE nplan */
                     47: #ifdef notdef
                     48:     /*  Eventually,  we would like to offer this visual too */
                     49:     0, 0, StaticGray, 0,   0,    0,   0,    0,   0,    1,   2,    1,
                     50: #endif
                     51: #ifdef STATIC_COLOR
                     52:     0,  0, StaticColor,0,   0,    0,   0,    0,   0,    8,  256,   8,
                     53: #else
                     54:     0,  0, PseudoColor,0,   0,    0,   0,    0,   0,    8,  256,   8,
                     55: #endif
                     56: };
                     57: 
                     58: #define        NUMVISUALS      ((sizeof visuals)/(sizeof visuals[0]))
                     59: #define        ROOTVISUAL      (NUMVISUALS-1)
                     60: 
                     61: static DepthRec depths[] = {
                     62: /* depth       numVid          vids */
                     63:     1,         0,              NULL,
                     64:     8,         1,              NULL,
                     65: };
                     66: 
                     67: static ColormapPtr cfbColorMaps[NUMVISUALS];   /* assume one per visual */
                     68: #define NUMDEPTHS      ((sizeof depths)/(sizeof depths[0]))
                     69: 
                     70: /* dts * (inch/dot) * (25.4 mm / inch) = mm */
                     71: Bool
                     72: cfbScreenInit(index, pScreen, pbits, xsize, ysize, dpi)
                     73:     int index;
                     74:     register ScreenPtr pScreen;
                     75:     pointer pbits;             /* pointer to screen bitmap */
                     76:     int xsize, ysize;          /* in pixels */
                     77:     int dpi;                   /* dots per inch */
                     78: {
                     79:     long       *pVids;
                     80:     register PixmapPtr pPixmap;
                     81:     int        i;
                     82:     void cfbInitialize332Colormap();
                     83: 
                     84:     pScreen->myNum = index;
                     85:     pScreen->width = xsize;
                     86:     pScreen->height = ysize;
                     87:     pScreen->mmWidth = (xsize * 254) / (dpi * 10);
                     88:     pScreen->mmHeight = (ysize * 254) / (dpi * 10);
                     89:     pScreen->numDepths = NUMDEPTHS;
                     90:     pScreen->allowedDepths = depths;
                     91: 
                     92:     pScreen->rootDepth = 8;
                     93:     pScreen->minInstalledCmaps = 1;
                     94:     pScreen->maxInstalledCmaps = 1;
                     95:     pScreen->backingStoreSupport = NotUseful;
                     96:     pScreen->saveUnderSupport = NotUseful;
                     97: 
                     98:     /* cursmin and cursmax are device specific */
                     99: 
                    100:     pScreen->numVisuals = NUMVISUALS;
                    101:     pScreen->visuals = visuals;
                    102: 
                    103:     pPixmap = (PixmapPtr )Xalloc(sizeof(PixmapRec));
                    104:     pPixmap->drawable.type = DRAWABLE_PIXMAP;
                    105:     pPixmap->drawable.depth = 8;
                    106:     pPixmap->drawable.pScreen = pScreen;
                    107:     pPixmap->drawable.serialNumber = 0;
                    108:     pPixmap->width = xsize;
                    109:     pPixmap->height = ysize;
                    110:     pPixmap->refcnt = 1;
                    111:     pPixmap->devPrivate = pbits;
                    112:     pPixmap->devKind = PixmapBytePad(xsize, 8);
                    113:     pScreen->devPrivate = (pointer)pPixmap;
                    114: 
                    115:     /* anything that cfb doesn't know about is assumed to be done
                    116:        elsewhere.  (we put in no-op only for things that we KNOW
                    117:        are really no-op.
                    118:     */
                    119:     pScreen->QueryBestSize = cfbQueryBestSize;
                    120:     pScreen->CreateWindow = cfbCreateWindow;
                    121:     pScreen->DestroyWindow = cfbDestroyWindow;
                    122:     pScreen->PositionWindow = cfbPositionWindow;
                    123:     pScreen->ChangeWindowAttributes = cfbChangeWindowAttributes;
                    124:     pScreen->RealizeWindow = cfbMapWindow;
                    125:     pScreen->UnrealizeWindow = cfbUnmapWindow;
                    126: 
                    127:     pScreen->RealizeFont = mfbRealizeFont;
                    128:     pScreen->UnrealizeFont = mfbUnrealizeFont;
                    129:     pScreen->GetImage = miGetImage;
                    130:     pScreen->GetSpans = cfbGetSpans;   /* XXX */
                    131:     pScreen->CreateGC = cfbCreateGC;
                    132:     pScreen->CreatePixmap = cfbCreatePixmap;
                    133:     pScreen->DestroyPixmap = cfbDestroyPixmap;
                    134:     pScreen->ValidateTree = miValidateTree;
                    135: 
                    136: #ifdef STATIC_COLOR
                    137:     pScreen->InstallColormap = NoopDDA;
                    138:     pScreen->UninstallColormap = NoopDDA;
                    139:     pScreen->ListInstalledColormaps = cfbListInstalledColormaps;
                    140: #endif
                    141: #ifdef STATIC_COLOR
                    142:     pScreen->StoreColors = NoopDDA;
                    143:     pScreen->ResolveColor = cfbResolveStaticColor;
                    144: #endif
                    145: 
                    146:     pScreen->RegionCreate = miRegionCreate;
                    147:     pScreen->RegionCopy = miRegionCopy;
                    148:     pScreen->RegionDestroy = miRegionDestroy;
                    149:     pScreen->Intersect = miIntersect;
                    150:     pScreen->Inverse = miInverse;
                    151:     pScreen->Union = miUnion;
                    152:     pScreen->Subtract = miSubtract;
                    153:     pScreen->RegionReset = miRegionReset;
                    154:     pScreen->TranslateRegion = miTranslateRegion;
                    155:     pScreen->RectIn = miRectIn;
                    156:     pScreen->PointInRegion = miPointInRegion;
                    157:     pScreen->WindowExposures = miWindowExposures;
                    158:     pScreen->RegionNotEmpty = miRegionNotEmpty;
                    159:     pScreen->RegionEmpty = miRegionEmpty;
                    160:     pScreen->RegionExtents = miRegionExtents;
                    161: 
                    162:     pScreen->BlockHandler = NoopDDA;
                    163:     pScreen->WakeupHandler = NoopDDA;
                    164:     pScreen->blockData = (pointer)0;
                    165:     pScreen->wakeupData = (pointer)0;
                    166: 
                    167:     pScreen->CreateColormap = cfbInitialize332Colormap;
                    168:     pScreen->DestroyColormap = NoopDDA;
                    169: 
                    170:     /*  Set up the remaining fields in the visuals[] array & make a RT_VISUALID */
                    171:     for (i = 0; i < NUMVISUALS; i++) {
                    172:        visuals[i].vid = FakeClientID(0);
                    173:        visuals[i].screen = index;
                    174:        AddResource(visuals[i].vid, RT_VISUALID, &visuals[i], NoopDDA, RC_CORE);
                    175:        switch (visuals[i].class) {
                    176:        case StaticGray:
                    177:        case StaticColor:
                    178:            CreateColormap(FakeClientID(0), pScreen, &visuals[i], 
                    179:                &cfbColorMaps[i], AllocAll, 0);
                    180:            break;
                    181:        case PseudoColor:
                    182:        case GrayScale:
                    183:            CreateColormap(FakeClientID(0), pScreen, &visuals[i], 
                    184:                &cfbColorMaps[i], AllocNone, 0);
                    185:            break;
                    186:        case TrueColor:
                    187:        case DirectColor:
                    188:            FatalError("Bad visual in cfbScreenInit\n");
                    189:        }
                    190:        if (!cfbColorMaps[i])
                    191:            FatalError("Can't create colormap in cfbScreenInit\n");
                    192:     }
                    193:     pScreen->defColormap = cfbColorMaps[ROOTVISUAL]->mid;
                    194:     pScreen->rootVisual = visuals[ROOTVISUAL].vid;
                    195: 
                    196:     /*  Set up the remaining fields in the depths[] array */
                    197:     for (i = 0; i < NUMDEPTHS; i++) {
                    198:        if (depths[i].numVids > 0) {
                    199:            depths[i].vids = pVids = (long *) Xalloc(sizeof (long) * depths[i].numVids);
                    200:            /* XXX - here we offer only the 8-bit visual */
                    201:            pVids[0] = visuals[ROOTVISUAL].vid;
                    202:        }
                    203:     }
                    204:     return( TRUE );
                    205: }
                    206: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.